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.




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.




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




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




En utilisant Java 8:

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



Links