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

isディレクトリ:

この抽象パス名が示すファイルが存在し、ディレクトリである場合にのみ true 。それ以外の場合は false

isファイル:

この抽象パス名が示すファイルが存在し、通常のファイルである場合にのみ true 。それ以外の場合は false ディレクトリではなく、さらにシステムに依存するその他の基準を満たしている場合、ファイルは正常です。Java アプリケーションによって作成されたディレクトリ以外のファイルは、通常のファイルであることが保証されています。

于 2012-05-18T05:53:41.070 に答える
1

ドキュメントから:

isFile():

この抽象パス名が示すファイルが通常のファイルかどうかをテストします。ファイルがディレクトリではなく、さらにシステムに依存するその他の基準を満たしている場合、そのファイルは正常です。Java アプリケーションによって作成されたディレクトリ以外のファイルは、通常のファイルであることが保証されています。

これは、 がtrue の場合isFile()falseでなければならないことを明確に意味します。ドキュメントの文言に基づいて、逆も当てはまります。isDirectory()isDirectory()

于 2012-05-18T05:53:51.310 に答える