以下测试通过:
File aDir = new File("aDir");
assertTrue(aDir.exists());
assertTrue(aDir.isDirectory());
assertFalse(aDir.isFile());
File aFile = new File("aFile");
assertTrue(aFile.exists());
assertFalse(aFile.isDirectory());
assertTrue(aFile.isFile());
File awol = new File("notInFileSystem");
assertFalse(awol.exists());
assertFalse(awol.isDirectory());
assertFalse(awol.isFile());
Run Code Online (Sandbox Code Playgroud)
在事物的表面上,似乎暗示对于所有文件file.isFile()都是真的,file.isDirectory()是假的.是否有任何已知类型的文件系统/文件类型/ java平台,这个假设不成立?
(各种类型的文件(符号链接,连接点,符号链接/缺少目标的连接点等)之间存在各种各样的野性,可能表现略有不同)
看看JavaDoc,似乎总是如此:
http://docs.oracle.com/javase/7/docs/api/java/io/File.html#isFile()
isDirectory:
当且仅当此抽象路径名表示的文件存在且为目录时才为true; 否则是假的
ISFILE:
当且仅当此抽象路径名表示的文件存在并且是普通文件时才返回true; 否则,如果文件不是目录,则文件是正常的,此外,它还满足其他系统相关标准.由Java应用程序创建的任何非目录文件都保证是普通文件.