14

「aaaaaa.xls」という名前のファイルがあります

このために、File.isFile()そしてFile.isDirectory()戻ってきていfalseますか?なぜ戻っfalseてくるのLinuxですか?

4

7 に答える 7

7

次のコード例を試してください

if(!pFile.exists()){
   throw new FileNotFoundException();
}

boolean isDir = pFile.isDirectory();

boolean isFile = pfile.isFile();

ファイルはファイルではありません

ディレクトリではなく、さらにシステムに依存する他の基準を満たす場合

例外がスローされた場合は、ファイル パスを確認する必要があります。

于 2013-02-13T12:25:00.387 に答える
6

ドキュメントによると:

public boolean isFile()

戻り値:この抽象パス名が示すファイルが存在し、通常 のファイルである場合にのみ true 。それ以外の場合は false。

これに基づいて、ファイルは存在しないか、通常のファイルではありません。

1番目の考えられる理由:

  1. ファイルが存在しません。
  2. ファイルにアクセスできません。
  3. ファイル名が間違っています。
  4. プログラムで使用されている文字エンコーディングは、ファイルの作成時に使用されたものと同じではありません。

2番目の考えられる理由:

  • 通常のファイルではありません。

または、JVM のバグです。可能性は低いですが、それも可能です。たとえば、すぐにパス名の感嘆符に問題がありました -バグ 4523159

何らかの方法でファイルにアクセスする場合は、呼び出しdir.listFiles()を検討し、その戻り値を操作してください。


(答えは部分的にこのスレッドに基づいています)

于 2014-01-19T23:25:04.163 に答える
0

この質問に対する他の回答で述べたように、おそらくファイルが「通常」ではないため、ファイルをfile.isFile()返す際にも問題がありました。false回避策として、file.listFiles() != null必要な機能を提供していると思われる を使用します。Java ファイル APIによると:

この抽象パス名がディレクトリを示さない場合、このメソッドは null を返します。それ以外の場合は、File オブジェクトの配列が返されます。

于 2016-11-27T16:19:12.790 に答える