2012-06-27 24 views
12

特定のディレクトリ内の特定のファイルをチェックしようとしています。私はコードを望んでいないが、私は私が持っているものを修正したい。この質問の唯一の違いは、拡張子が.MODのファイルを探すことです。ファイルが特定のディレクトリに存在するかどうかの確認

私はコードを準備してください -

public static int checkExists(String directory, String file) { 
    File dir = new File(directory); 
    File[] dir_contents = dir.listFiles(); 
    String temp = file + ".MOD"; 
    boolean check = new File(temp).exists(); 
    System.out.println("Check"+check); // -->always says false 

    for(int i = 0; i<dir_contents.length;i++) { 
     if(dir_contents[i].getName() == (file + ".MOD")) 
      return Constants.FILE_EXISTS; 
    } 

    return Constants.FILE_DOES_NOT_EXIST; 
} 

しかし、いくつかの理由のために、それは動作しませんが。私はなぜ、誰もここにバグを見つけることができるのか分からないのですか?

+0

をtmpの値をプリントアウトし、ファイルが実際に存在するかどうかを確認しましたか?そしてもしそうなら、どのenvがLinuxのファイルでこれ(Windowsかlinux)で大文字と小文字が区別されます... –

+0

はい私は一時的な値を印刷しようとしましたが、ファイルは実際にディレクトリに存在します。これはWindows OSですが、ディレクトリ内のファイルの 'file'パラメータと実際の名前は大文字と小文字が区別されます。 – gkris

答えて

30

temp.MODファイルが現在のディレクトリ(アプリケーションを実行するディレクトリ)に存在すると見なしますか、それとも "directory"フォルダに入れたいのですか?後者の場合は、次のようにファイルを作成してみてください。

boolean check = new File(directory, temp).exists(); 

また、アクセス権のエラーでも失敗するため、ファイルのアクセス権もチェックしてください。大文字小文字の区別は、Spaethが言及したように、問題の原因となる可能性もあります。

+0

はい、後者が該当し、これが機能します! :) ありがとう – gkris

+0

助けてくれてうれしいです。 – n0rm1e

3

これはバグがある場所です。

String temp = file + ".MOD"; 

そして

if(dir_contents[i].getName() == (file + ".MOD")) 

コードboolean check = new File(temp).exists();はありません必要なディレクトリにカレントディレクトリ内のファイルをチェックします。

String dirName="/home/demo"; 
    File dir = new File(dirName); 
    File[] dir_contents = dir.listFiles(); 
    String temp = dirName+"/"+"README" + ".MOD"; 
    boolean check = new File(temp).exists(); 
    System.out.println("Check" + check); // -->always says false 

    for (int i = 0; i < dir_contents.length; i++) { 
     if (dir_contents[i].getName().equals("README" + ".MOD")) 
      return Constants.FILE_EXISTS; 
      } 

    return Constants.FILE_DOES_NOT_EXIST; 
+0

はい。ありがとう。 houman001はちょうど同じことを指摘した。 – gkris

+0

@gkris forループで.equals()を使用する必要があります –

+0

forループは、同じファイルの存在をチェックする別の方法です。同じ機能をチェックする2つの方法はありませんでした。これで、forループ全体を安全に削除できます。再度、感謝します。 – gkris

3

これを試してみてください..............あなたはすでに

File f = new File("./file_name"); 
if(f.exists()){ 
    System.out.println("success"); 
} 
else{ 
    System.out.println("fail"); 
} 
+0

私はカレントディレクトリのファイルをチェックしていないので、これは役に立たない。とにかく私は答えを得てそれも受け入れました。ありがとう – gkris

+0

パスで私が意味するもの... ok新しいファイル( "./ファイル名"); "" (ドット)演算子は現在のディレクトリを意味します –

+0

はい。私は現在のディレクトリをチェックしたくありません。 – gkris

関連する問題