File类的一个奇怪现象

<pre name="code" class="java">import java.io.File;

public class Test {
public static void main(String[] args) {
File a = new File("d:");
System.out.println(a.getAbsolutePath());
}
}
上面这段代码生成的程序, 放在d盘以外的其他盘, 输出的是 d:<br />

但是放在d盘的任一文件夹下, 输出就变成了程序所在的文件夹


感觉像是JDK的BUG, 但我看了File的源码, 字符串的解析却不是在java里做的... 貌似是用JNI扔给了windows

大惑不解, 求教 

问题补充

IcyFenix 写道
……
相对路径啊,只说明是D盘不够,要说明是D盘根目录
就是改成下面这样
File a = new File("d:/"); 

那为什么程序在其他盘的时候不会被认为是相对路径呢
问题补充
IcyFenix 写道
放到其他盘也是相对路径啊,只不过相对路径正好是D盘根目录而已。

相对路径不是相对于当前目录的路径麽, 怎么会相对到其他盘的根目录了呢... 
问题补充
captmjc 写道
lz当年肯定没学过dos,dos下面运行一下如下命令
E:
CD E:\1
DIR D:
PAUSE
CLS
CD D:\1
DIR D:
PAUSE


终于有人看懂我的问题了,果然是跟windows有关,兄台厉害 
PS: 当年的确是没学过DOS,因为DOS风行当年我还在读幼儿园 

lz当年肯定没学过dos,dos下面运行一下如下命令
E:
CD E:\1
DIR D:
PAUSE
CLS
CD D:\1
DIR D:
PAUSE

……
相对路径啊,只说明是D盘不够,要说明是D盘根目录
就是改成下面这样
File a = new File("d:/");

放到其他盘也是相对路径啊,只不过相对路径正好是D盘根目录而已。

public String getAbsolutePath()返回此抽象路径名的绝对路径名字符串。

如果此抽象路径名已经是绝对路径名,则返回该路径名字符串,这与 getPath() 方法一样。如果此抽象路径名是空抽象路径名,则返回当前用户目录的路径名字符串,该目录由系统属性 user.dir 指定。否则,使用与系统有关的方式解析此路径名。在 UNIX 系统上,根据当前用户目录解析相对路径名,可使该路径名成为绝对路径名。在 Microsoft Windows 系统上,根据路径名指定的当前驱动器目录(如果有)解析相对路径名,可使该路径名成为绝对路径名;否则,可以根据当前用户目录解析它。

API文档

楼主用的文件管理器是啥

[quote="captmjc"]lz当年肯定没学过dos,dos下面运行一下如下命令
E:
CD E:\1
DIR D:
PAUSE
CLS
CD D:\1
DIR D:
PAUSE

[/quote]
正解