Comment puis-je vérifier si un fichier existe en Java?
Comment puis-je vérifier si un fichier existe, avant de l'ouvrir pour la lecture en Java? (l'équivalent de Perl -e $filename
).
La seule question semblable sur de SORTE traite de l'écriture du fichier et a ainsi répondu à l'aide de FileWriter ce qui n'est évidemment pas applicable ici.
Si possible, je préfèrerais un vrai appel d'API renvoie true/false contrairement à certains "Appel API pour ouvrir un fichier et de l'attraper quand elle lève une exception qui vous cochez" pas de fichier "dans le texte", mais je peux vivre avec ce dernier.
- Tiens également à ajouter que vous souhaitez vérifier les autorisations de fichier approprié: docs.oracle.com/javase/6/docs/api/java/io/File.html java.io.Fichier a des méthodes
canRead
,canWrite
, etcanExecute
pour vérifier que. - Il convient de noter que c'est dangereux. Le système de fichiers peut changer à tout moment, y compris à droite après votre "ce fichier existe" méthode retourne. Depuis que vous avez à gérer ce cas de toute façon, une telle méthode est d'une utilité douteuse. Si vous allez ouvrir le fichier, la bonne façon de le faire est d'ouvrir le fichier et de gérer l'exception.
- bon point, mais c'est d'une incontestable utilité dans la non-concordance de l'environnement, qui est arrivé à être le cas, j'ai été besoin de ce en 😉
- Êtes-vous en cours d'exécution sur un préventivement multitasked OS? Soit ça, ou c'est un spécialement conçu Java chip. Si l'ancien, vous êtes dans un tel environnement. D'autres processus peuvent modifier le système de fichiers de sous vous.
- non pas que cela importe, mais c'est un seul thread application conçue pour un usage personnel. Les chances qu'il a consacré le fichier sera en quelque sorte créé/modifié sous elle sont incroyablement bas.
Vous devez vous connecter pour publier un commentaire.
À l'aide de
java.io.Fichier
:if(f.isFile())
à la place.Je vous conseille d'utiliser
isFile()
au lieu deexists()
. La plupart du temps, vous êtes à la recherche pour vérifier si le chemin pointe sur un fichier non seulement qu'elle existe. Rappelez-vous queexists()
renvoie true si vos points de chemin d'accès à un répertoire.new File("C:/").exists()
retourne true, mais ne vous permettra pas d'ouvrir et de lire un fichier./path
,new File("file.txt").exists()
sera de retourtrue
si le bon chemin d'accès complet est/path/to/file.txt
, la réponse est un grand pas (sauf si un autre fichier/path/file.txt
existe).Par l'aide de nio dans Java SE 7,
Si les deux existent et notExists renvoie la valeur false, l'existence du fichier ne peut pas être vérifiée. (peut-être pas de droit d'accès à ce chemin d'accès)
Vous pouvez vérifier si le chemin d'accès de répertoire ou de fichier ordinaire.
Veuillez cocher cette Java SE 7 tutoriel.
java.io.File.exists()
(de mon petit point de référence sur le seul ordinateur que j'ai testé: Windows Server 2012 en cours d'exécution Java 1.7.0_45 x64).java.nio.file.Files.exists()
était 5 fois plus LENT quejava.io.File.exists
. (Win7 Java 1.7.0_79 - x86)À L'Aide De Java 8:
Files.exists()
prend deux arguments. Généralement, vous aurez envie de quelque chose commeFiles.exists(path, LinkOption.NOFOLLOW_LINKS )
.Cela ne va pas créer un fichier physique. Faudra juste créer un objet de la classe de Fichier. Physiquement créer un fichier, vous devez explicitement créer:
Donc
f.exists()
peut être utilisé pour vérifier si un fichier existe ou pas.-e
également s'assurer que l'application "peut se lire" le fichier?Il y a plusieurs moyens d'y parvenir.
En cas de juste pour l'existence. Il pourrait être un fichier ou un répertoire.
Vérifier les fichier
Vérifier Répertoire.
Java 7 chemin.
Vous pouvez utiliser les éléments suivants:
File.exists()
premier succès pour "java fichier existe" sur google:
String.valueOf()
, qui gère les valeurs nullNe le font pas. Il suffit de prendre la
FileNotFoundException.
Le système de fichier pour tester si le fichier existe de toute façon. Il n'y a pas de raison d'en faire tout ce que deux fois, et plusieurs raisons de ne pas, tels que:N'essayez pas de deviner le système. Elle le sait. Et n'essayez pas de prédire l'avenir. En général, la meilleure façon de tester si tout ressource est disponible, c'est juste pour essayer de l'utiliser.
Pour moi une combinaison de la accepté de répondre par Sean A. O. Harney et le commentaire par Cort3z semble être la meilleure solution.
Utilisé l'extrait de code suivant:
Espère que cela pourrait aider quelqu'un.
Je sais que je suis un peu en retard dans ce fil. Cependant, voici ma réponse, valable depuis Java 7.
L'extrait de code suivant
est parfaitement satisfaisants, parce que la méthode
isRegularFile
retournefalse
si le fichier n'existe pas. Donc, pas besoin de vérifier siFiles.exists(...)
.Noter que d'autres paramètres sont des options indiquant la façon dont les liens doivent être manipulés. Par défaut, les liens symboliques sont suivies.
À partir de la documentation d'Oracle Java
Files.notExists
,Files.isDirectory
etFiles.isRegularFile.
La meilleure solution pour cela est la suivante:path.toFile().exists()
Il est également utile de se familiariser avec les Communes FileUtils https://commons.apache.org/proper/commons-io/javadocs/api-2.5/org/apache/commons/io/FileUtils.html
Cela a d'autres méthodes pour la gestion de fichiers et souvent mieux que JDK.
Par exemple, si vous avez un répertoire de fichiers et que vous voulez vérifier s'il existe
exists
retourne false si le fichier n'existe passource: https://alvinalexander.com/java/java-file-exists-directory-exists
Exemple Simple avec de bonnes pratiques de codage et couvrant tous les cas :
De référence, et d'autres exemples à
https://zgrepcode.com/examples/java/java/nio/file/filealreadyexistsexception-implementations
Si vous voulez vérifier un
File
dans un répertoiredir
et vérifier la
check
résultatfera l'affaire
N'utilisez pas de Fichier constructeur avec de la Ficelle.
Cela peut ne pas fonctionner!
Au lieu de cela, utiliser l'URI:
File.exists()
pour vérifier si un fichier existe, il sera de retour une valeur booléenne pour indiquer la vérification de l'état de fonctionnement; la valeur true si le fichier existe, false s'il n'existe pas.Vous pouvez utiliser le code suivant pour vérifier:
Vous pouvez le faire de cette façon
File.is Exist()
ouFiles.isRegularFile()
dans le JDK 8Il n'y a pour objectif spécifique de la conception de ces méthodes. On ne peut pas dire utiliser de quelqu'un pour vérifier le fichier existe ou pas.
docs.oracle.com
Pour vérifier si un fichier existe, il suffit d'importer java.io.* bibliothèque
Source: http://newsdivariotipo.altervista.org/java-come-controllare-se-un-file-esiste/