2

以下测试通过:

    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());

从表面上看,这似乎意味着对于所有为真的文件file.isFile()都是file.isDirectory()假的。是否存在任何已知类型的文件系统/文件类型/java 平台,而这种假设不成立?

(在文件(符号链接、连接点、符号链接/缺少目标的连接点等)之间存在各种野蛮的文件类别,它们的行为可能略有不同)

4

2 回答 2

7

查看 JavaDoc,情况似乎总是如此:

http://docs.oracle.com/javase/7/docs/api/java/io/File.html#isFile()

是目录:

当且仅当此抽象路径名表示的文件存在并且是目录时才为真;否则为假

是文件:

当且仅当此抽象路径名表示的文件存在并且是普通文件时才为真;否则为 false 如果文件不是目录并且满足其他与系统相关的标准,则该文件是正常的。Java 应用程序创建的任何非目录文件都保证是普通文件。

于 2012-05-18T05:53:41.070 回答
1

文档中:

isFile()

测试此抽象路径名表示的文件是否为普通文件。如果文件不是目录,并且满足其他系统相关标准,则该文件是正常的。Java 应用程序创建的任何非目录文件都保证是普通文件。

这绝对意味着 ifisFile()trueisDirectory()必须为false。根据isDirectory()文档中的措辞,反之亦然。

于 2012-05-18T05:53:51.310 回答