这是java jdk中的一个错误吗?
当我得到一个带有代码的java.lang.File类时,当然我得到了一个表示e:\目录。File file = new File("e:/");
但是,如果我得到了一个带有代码的File类,并且我只是在驱动器E:中,那么我就得到了一个表示当前目录的File类。File file = new File("e:");
假设我在目录 E:\dir\ 中,并且此目录有一个名为 Test.java。它的内容是:
import java.io.File;
public class Test {
public static void main(String[] args) {
File file = new File("e:");
File[] files = file.listFiles();
for(File f: files){
System.out.println(f + " " + f.exists());
}
}
}
打开 cmd 工具并导航到目录 e:\dir,在其中执行以下命令:
E:\dir> javac Test.java
E:\dir> java Test
我得到了:
e:\Test.class false
e:\Test.java false
这是一个java jdk错误吗?
来自@JimGarrison的其他信息:
我运行此代码
public class Foo3
{
public static void main(String[] args) throws Exception
{
File f = new File("D:");
System.out.println(f.getCanonicalPath());
for (File x : f.listFiles())
System.out.println(x + " " + x.getCanonicalPath() + " " + x.getAbsolutePath() + " " + x.exists() + " " + x.getAbsoluteFile().exists());
}
}
在Eclipse中(它位于我的D:驱动器上),并获得了以下输出:
D:\dev\src\pdxep
D:\.classpath D:\dev\src\pdxep\.classpath D:\dev\src\pdxep\.classpath false true
D:\.project D:\dev\src\pdxep\.project D:\dev\src\pdxep\.project false true
D:\.settings D:\dev\src\pdxep\.settings D:\dev\src\pdxep\.settings false true
D:\gallery D:\dev\src\pdxep\gallery D:\dev\src\pdxep\gallery false true
D:\pom.xml D:\dev\src\pdxep\pom.xml D:\dev\src\pdxep\pom.xml false true
D:\src D:\dev\src\pdxep\src D:\dev\src\pdxep\src false true
D:\target D:\dev\src\pdxep\target D:\dev\src\pdxep\target false true
这证实了有一些有趣的事情正在发生。
Java Bug 8130462似乎与此相关,因为它与Windows中的相对路径与绝对路径有关。