私は Windows 8 を
使用しています
。Javadoc forFile#list()
は、「この抽象パス名がディレクトリを示さない場合、または I/O エラーが発生した場合は null を返します」と主張しています。
ここで、「ディレクトリ」(実際には NTFS ジャンクション) の「アプリケーション データ」(C:\Users\[Username] ディレクトリにあります) の例を見てみましょう。
File#isDirectory()
「Application Data」を呼び出すと、 が返されますtrue
。ただし、「Application Data」を呼び出すとFile#list()
、毎回 null が返されるため、I/O エラーではありません。
基本的に、これは役に立たない呼び出しを行い、が実際にディレクトリであることを確認したいかどうかFile#isDirectory()
を確認することを強制します。File#list() != null
File
私が間違っていない限り、ファイルが実際にディレクトリであるかどうかを「確実に」確認する方法は他にありませんか? File#list()
ファイルシステム上のすべてのフォルダーで実行している場合、非常に高価なメソッド呼び出しです。
この問題を例示する Java ファイルは次のとおりです。 http://pastebin.com/ieH0xTek Windows でのみ動作します。