「aaaaaa.xls」という名前のファイルがあります
このために、File.isFile()
そしてFile.isDirectory()
戻ってきていfalse
ますか?なぜ戻っfalse
てくるのLinux
ですか?
次のコード例を試してください
if(!pFile.exists()){
throw new FileNotFoundException();
}
boolean isDir = pFile.isDirectory();
boolean isFile = pfile.isFile();
ファイルはファイルではありません
ディレクトリではなく、さらにシステムに依存する他の基準を満たす場合
例外がスローされた場合は、ファイル パスを確認する必要があります。
ドキュメントによると:
public boolean isFile()
戻り値:この抽象パス名が示すファイルが存在し、通常 のファイルである場合にのみ true 。それ以外の場合は false。
これに基づいて、ファイルは存在しないか、通常のファイルではありません。
1番目の考えられる理由:
2番目の考えられる理由:
または、JVM のバグです。可能性は低いですが、それも可能です。たとえば、すぐにパス名の感嘆符に問題がありました -バグ 4523159。
何らかの方法でファイルにアクセスする場合は、呼び出しdir.listFiles()
を検討し、その戻り値を操作してください。
(答えは部分的にこのスレッドに基づいています)
この質問に対する他の回答で述べたように、おそらくファイルが「通常」ではないため、ファイルをfile.isFile()
返す際にも問題がありました。false
回避策として、file.listFiles() != null
必要な機能を提供していると思われる を使用します。Java ファイル APIによると:
この抽象パス名がディレクトリを示さない場合、このメソッドは null を返します。それ以外の場合は、File オブジェクトの配列が返されます。