解释
可能看起来有点非直观的但实际上这就是课堂的样子应该可以工作根据其文档 https://docs.oracle.com/javase/10/docs/api/java/io/File.html。它被称为空抽象路径名在文档中:
空的抽象路径名没有前缀和空名称序列.
从你的构造函数中File#File(String)
:
通过将给定路径名字符串转换为抽象路径名来创建新的 File 实例。如果给定的字符串是空字符串,则结果是空抽象路径名.
So the File
类实际上解释了空名作为真实姓名。当你测试时File#isDirectory()
or File#isFile()
因此它检查是否存在像这样的文件或目录
D:\Java Workspace\iTAW_Workspace\JavaTest\<empty>
请注意<empty>
我写它是为了表明它实际上在这里搜索一个文件空名。显然这样的文件不可能存在,因此结果将始终是false
。再说一次,它不检查
D:\Java Workspace\iTAW_Workspace\JavaTest\
而是空的文件在此目录中,该目录不存在。
不幸的是,您在使用时看不到这一点File#toAbsolutePath()
方法,因为没有表示空名.
NIO
请注意,该类File
和它相关的一切都是outdated。现在文件IO是使用NIO来完成的Files
, Paths
and Path
。这个 API 更加干净和直观。它也将按照您当前示例的预期工作:
Files.isDirectory(Paths.get("")); // true
看看文档 https://docs.oracle.com/javase/10/docs/api/java/nio/file/Files.html了解更多。