web-dev-qa-db-fra.com

vérifier si le fichier existe dans un répertoire spécifique

J'essaie de vérifier un fichier spécifique dans un répertoire donné. Je ne veux pas le code mais je veux réparer celui que j'ai. La seule différence dans cette question, c'est que je recherche des fichiers avec une extension .MOD.

J'ai le code prêt: -

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;
}

Mais pour certaines raisons, cela ne fonctionne pas. Je ne comprends pas pourquoi, quelqu'un peut-il trouver un bug ici?

18
gkris

Vous attendez-vous à ce que le fichier temp.MOD se trouve dans le répertoire en cours (le répertoire à partir duquel vous exécutez votre application), ou vous voulez qu'il se trouve dans le dossier "répertoire"? Dans ce dernier cas, essayez de créer le fichier de cette façon:

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

Vérifiez également les autorisations de fichier, car il échouera également en cas d'erreurs d'autorisation. La sensibilité à la casse pourrait également être la cause du problème, comme l'a mentionné Spaeth.

45
n0rm1e

C'est là que vous avez le bug.

String temp = file + ".MOD";

Et

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

Le code boolean check = new File(temp).exists(); recherchera le fichier dans le répertoire courant et non dans le répertoire requis.

    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

Essaye ça..............

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