Comment vérifier si un fichier existe en Java?


Answers

Je recommanderais d'utiliser isFile() au lieu de exists() . La plupart du temps vous cherchez à vérifier si le chemin pointe vers un fichier non seulement qu'il existe. Rappelez-vous que exists() retournera vrai si votre chemin pointe vers un répertoire.

new File("path/to/file.txt").isFile();

new File("C:/").exists() retournera vrai mais ne vous permettra pas d'ouvrir et de lire en tant que fichier.

Question

Comment puis-je vérifier si un fichier existe, avant de l'ouvrir pour la lecture en Java? (équivalent du -e $filename de Perl).

La seule question similaire sur SO traite de l'écriture du fichier et a donc été répondu en utilisant FileWriter qui n'est évidemment pas applicable ici.

Si possible, je préférerais un vrai appel d'API renvoyant vrai / faux par opposition à "Appeler API pour ouvrir un fichier et attraper quand il lance une exception que vous vérifiez pour 'aucun fichier' dans le texte", mais je peux vivre avec le dernier.




Si vous voulez rechercher un File dans un répertoire

String directoryPath = dir.getAbsolutePath()
boolean check = new File(new File(directoryPath), aFile.getName()).exists();

et vérifiez le résultat de la check




Vous pouvez utiliser ce qui suit: File.exists()




En utilisant Java 8:

if(Files.exists(Paths.get(filePathString))) { 
    // do something
}



f.isFile() && f.canRead()



N'utilisez pas le constructeur de fichier avec String.
Cela peut ne pas fonctionner!
Au lieu de cela, utilisez l'URI:

File f = new File(new URI("file:///"+filePathString.replace('\\', '/')));
if(f.exists() && !f.isDirectory()) { 
    // to do
}






Pour moi, une combinaison de la réponse acceptée par Sean AO Harney et le commentaire résultant par Cort3z semble être la meilleure solution.

Utilisé l'extrait suivant:

File f = new File(filePathString);
if(f.exists() && f.isFile()) {
    //do something ...
}

J'espère que cela pourrait aider quelqu'un.









Related