23

特定のディレクトリで特定のファイルをチェックしようとしています。コードは必要ありませんが、持っているコードを修正したいと思います。この質問の唯一の違いは、拡張子が。のファイルを探すことです.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;
}

しかし、いくつかの理由で、それは機能しません。理由がわかりませんが、誰かがここでバグを見つけることができますか?

4

3 に答える 3

52

temp.MOD ファイルが現在のディレクトリ (アプリケーションを実行するディレクトリ) にあることを期待していますか、それとも「ディレクトリ」フォルダにあることを期待していますか? 後者の場合、次の方法でファイルを作成してみてください。

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

パーミッションエラーでも失敗するため、ファイルのパーミッションも確認してください。Spaethが述べたように、大文字と小文字を区別することも問題の原因である可能性があります。

于 2012-06-27T06:47:45.853 に答える
5

ここにバグがあります。

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; 
于 2012-06-27T06:50:36.323 に答える
4

これを試して..............

File f = new File("./file_name");
if(f.exists()){
    System.out.println("success");
}
else{
    System.out.println("fail");
}
于 2012-06-27T07:11:02.347 に答える