Когда я получил класс java.lang.File с кодом File file = new File("e:/");
, конечно, я получил класс File, представленный в каталоге e: \.
Но если я получил класс File с кодом File file = new File("e:");
, и я просто в диске E:, тогда я получил класс File, представленный в текущем каталоге.
Предположим, что я в каталоге 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 Ошибка 8130462, похоже, связана с тем, что она связана с относительными абсолютными путями, особенно в Windows.