web-dev-qa-db-ja.com

ファイルが特定のディレクトリに存在するかどうかを確認する

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

しかし、何らかの理由で、機能しません。なぜか、ここでバグを見つけることができますか?

18
gkris

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

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

また、ファイルのアクセス許可も確認してください。これは、アクセス許可エラーでも失敗するためです。 Spaethが述べたように、大文字小文字の区別も問題の原因である可能性があります。

45
n0rm1e

ここにバグがあります。

_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; 
_
5
Akhi

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

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