在使用某些 File 对象时,我遇到了我认为不寻常的行为。
import java.io.File;
public class MyClass
{
public static void main(String[] args)
{
File file = new File("C:\\x..");
System.out.println(file.isDirectory());
System.out.println(file.listFiles());
}
}
假设C:\x
存在某个目录,file.isDirectory()
将在路径末尾添加两个点返回 true。这复制了命令行中的行为,cd x..
将目录更改为x
.
但是,当调用 时file.listFiles()
,该方法返回 null,这仅在文件不是目录时才应该发生。这似乎与 . 的定义不一致listFiles()
。
为什么会这样?为什么路径末尾有两个点会转到同一个目录,就好像没有点一样?
这个问题似乎是 Windows 独有的。Linux 正确 (?) 为isDirectory()
.