Comment puis-je vérifier si un fichier existe, avant de l'ouvrir pour la lecture en Java (l'équivalent de Perl
-e $filename
)?
Le seul question similaire sur SO concerne la rédaction du dossier et a donc été répondue en utilisant FileWriter
ce qui n'est évidemment pas applicable ici.
Si possible je préfère une vraie API appel d' renvoyant vrai / faux, par opposition à certains "Appeler l'API pour ouvrir un fichier et intercepter quand il lève une exception que vous vérifiez pour" aucun fichier "dans le texte", mais je peux vivre avec le dernier.
canRead
,canWrite
etcanExecute
pour vérifier que .Réponses:
En utilisant
java.io.File
:la source
if(f.isFile())
plutôt.Je recommanderais d'utiliser
isFile()
au lieu deexists()
. La plupart du temps, vous cherchez à vérifier si le chemin d'accès pointe vers un fichier, non seulement qu'il existe. N'oubliez pas queexists()
cela retournera vrai si votre chemin d'accès pointe vers un répertoire.new File("C:/").exists()
renverra true mais ne vous permettra pas de l'ouvrir et de le lire en tant que fichier.la source
/path
,new File("file.txt").exists()
retourneratrue
si le chemin complet est correct/path/to/file.txt
, la réponse est un grand non (à moins qu'un autre fichier/path/file.txt
n'existe).En utilisant nio dans Java SE 7,
Si les deux
exists
etnotExists
retournent false, l'existence du fichier ne peut pas être vérifiée. (peut-être pas de droit d'accès à ce chemin)Vous pouvez vérifier s'il
path
s'agit d'un répertoire ou d'un fichier normal.Veuillez consulter ce tutoriel Java SE 7 .
la source
java.nio.file.Files.exists()
est beaucoup plus rapide quejava.io.File.exists()
(à partir de ma petite référence sur le seul ordinateur que j'ai testé: Windows Server 2012 exécutant Java 1.7.0_45 x64).java.nio.file.Files.exists()
5 fois plus lent quejava.io.File.exists
. (Win7 Java 1.7.0_79 - x86)Utilisation de Java 8:
la source
Files.exists()
prend deux arguments. En règle générale, vous voudrez quelque chose commeFiles.exists(path, LinkOption.NOFOLLOW_LINKS )
.Cela ne créera pas de fichier physique. Créera juste un objet de la classe File. Pour créer physiquement un fichier, vous devez le créer explicitement:
Il
f.exists()
peut donc être utilisé pour vérifier si un tel fichier existe ou non.la source
la source
-e
garantit-elle également que l'application "peut lire" le fichier?Il existe plusieurs façons d'y parvenir.
En cas de juste pour l'existence. Il peut s'agir d'un fichier ou d'un répertoire.
Vérifier le fichier
Vérifiez le répertoire.
Java 7 voies.
la source
Vous pouvez utiliser les éléments suivants:
File.exists()
la source
premier coup pour "le fichier java existe" sur google:
la source
String.valueOf()
, qui gère lesNon. Il suffit d'attraper le
FileNotFoundException.
système de fichiers pour tester si le fichier existe de toute façon. Il est inutile de faire tout cela deux fois, et plusieurs raisons de ne pas le faire, telles que:N'essayez pas de deviner le système. Il sait. Et n'essayez pas de prédire l'avenir. En général, la meilleure façon de tester si une ressource est disponible est simplement d'essayer de l'utiliser.
la source
Pour moi, une combinaison de la réponse acceptée par Sean AO Harney et du commentaire résultant de Cort3z semble être la meilleure solution.
Utilisé l'extrait de code suivant:
J'espère que cela pourrait aider quelqu'un.
la source
Je sais que je suis un peu en retard dans ce fil. Cependant, voici ma réponse, valable depuis Java 7 et plus.
L'extrait suivant
est parfaitement satisfaisant, car la méthode
isRegularFile
retournefalse
si le fichier n'existe pas. Par conséquent, pas besoin de vérifier siFiles.exists(...)
.Notez que d'autres paramètres sont des options indiquant comment les liens doivent être traités. Par défaut, les liens symboliques sont suivis.
À partir de la documentation Java Oracle
la source
Files.notExists
,Files.isDirectory
etFiles.isRegularFile.
la meilleure alternative à cela est:path.toFile().exists()
Il vaut également la peine de se familiariser avec Commons FileUtils https://commons.apache.org/proper/commons-io/javadocs/api-2.5/org/apache/commons/io/FileUtils.html Cela a des méthodes supplémentaires pour gérer les fichiers et souvent mieux que JDK.
la source
Par exemple, si vous avez un répertoire de fichiers et que vous souhaitez vérifier s'il existe
exists
retournera false si le fichier n'existe passource: https://alvinalexander.com/java/java-file-exists-directory-exists
la source
Exemple simple avec de bonnes pratiques de codage et couvrant tous les cas:
Référence et autres exemples sur
https://zgrepcode.com/examples/java/java/nio/file/filealreadyexistsexception-implementations
la source
Si vous souhaitez rechercher un
File
dans un répertoiredir
et vérifier le
check
résultatla source
fera l'affaire
la source
N'utilisez pas le constructeur de fichiers avec String.
Cela peut ne pas fonctionner!
Au lieu de cela, utilisez l'URI:
la source
File.exists()
pour vérifier si un fichier existe, il retournera une valeur booléenne pour indiquer l'état de l'opération de vérification; true si le fichier existe; faux s'il n'existe pas.la source
Vous pouvez utiliser le code suivant pour vérifier:
la source
Vous pouvez le faire de cette façon
la source
File.is Exist()
ouFiles.isRegularFile()
dans JDK 8Il existe un objectif spécifique pour concevoir ces méthodes. Nous ne pouvons pas dire qu'il faut utiliser quelqu'un pour vérifier l'existence du fichier ou non.
la source
Pour vérifier si un fichier existe, importez simplement la bibliothèque java.io. *
Source: http://newsdivariotipo.altervista.org/java-come-controllare-se-un-file-esiste/
la source