Wie kann ich überprüfen, ob eine Datei vorhanden ist, bevor ich sie zum Lesen in Java öffne (entspricht Perl
-e $filename
)?
Die einzige ähnliche Frage zu SO befasst sich mit dem Schreiben der Datei und wurde daher mit beantwortet, FileWriter
was hier offensichtlich nicht anwendbar ist.
Wenn möglich, würde ich einen echten API- Aufruf bevorzugen , der true / false zurückgibt, im Gegensatz zu einer "Aufruf-API zum Öffnen einer Datei und zum Abfangen, wenn eine Ausnahme ausgelöst wird, bei der Sie im Text auf" keine Datei "prüfen", aber ich kann damit leben Letzteres.
java
file-io
io
file-exists
DVK
quelle
quelle
canRead
,canWrite
undcanExecute
zu überprüfen , dass .Antworten:
Verwenden von
java.io.File
:quelle
if(f.isFile())
stattdessen.Ich würde empfehlen,
isFile()
anstelle von zu verwendenexists()
. Meistens möchten Sie überprüfen, ob der Pfad auf eine Datei verweist und nicht nur darauf, dass sie vorhanden ist. Denken Sie daran, dassexists()
true zurückgegeben wird, wenn Ihr Pfad auf ein Verzeichnis verweist.new File("C:/").exists()
gibt true zurück, erlaubt Ihnen jedoch nicht, es als Datei zu öffnen und daraus zu lesen.quelle
/path
,new File("file.txt").exists()
wird zurückkehren ,true
wenn die richtige vollständigen Pfad ist/path/to/file.txt
, ist die Antwort ein großes Nein (es sei denn , eine andere Datei/path/file.txt
vorhanden ist ).Durch die Verwendung von nio in Java SE 7
Wenn beide
exists
undnotExists
false zurückgeben, kann das Vorhandensein der Datei nicht überprüft werden. (möglicherweise kein Zugriffsrecht auf diesen Pfad)Sie können überprüfen, ob
path
es sich um ein Verzeichnis oder eine reguläre Datei handelt.Bitte überprüfen Sie dieses Java SE 7-Tutorial .
quelle
java.nio.file.Files.exists()
ist viel schneller alsjava.io.File.exists()
(von meinem kleinen Benchmark auf dem einzigen Computer, den ich getestet habe: Windows Server 2012 mit Java 1.7.0_45 x64).java.nio.file.Files.exists()
war 5 mal langsamer alsjava.io.File.exists
. (Win7 Java 1.7.0_79 - x86)Verwenden von Java 8:
quelle
Files.exists()
nimmt zwei Argumente. Normalerweise möchten Sie so etwas wieFiles.exists(path, LinkOption.NOFOLLOW_LINKS )
.Dadurch wird keine physische Datei erstellt. Erstellt nur ein Objekt der Klasse Datei. Um eine Datei physisch zu erstellen, müssen Sie sie explizit erstellen:
So
f.exists()
kann verwendet werden , um zu überprüfen , ob eine solche Datei vorhanden ist oder nicht.quelle
quelle
-e
auch sicher, dass die Anwendung die Datei "lesen" kann?Es gibt mehrere Möglichkeiten, dies zu erreichen.
Im Falle von nur für die Existenz. Es kann sich um eine Datei oder ein Verzeichnis handeln.
Nach Datei suchen
Nach Verzeichnis suchen.
Java 7 Weg.
quelle
Sie können Folgendes verwenden:
File.exists()
quelle
Erster Treffer für "Java-Datei existiert" bei Google:
quelle
String.valueOf()
, die Nullen behandeltTu es nicht. Fangen Sie einfach das
FileNotFoundException.
Das Dateisystem muss testen, ob die Datei trotzdem existiert. Es macht keinen Sinn, das alles zweimal zu tun, und es gibt mehrere Gründe, dies nicht zu tun, wie zum Beispiel:Versuchen Sie nicht, das System zu überdenken. Es weiß. Und versuchen Sie nicht, die Zukunft vorherzusagen. Im Allgemeinen können Sie am besten testen, ob eine Ressource verfügbar ist, indem Sie versuchen, sie zu verwenden.
quelle
Für mich scheint eine Kombination aus der akzeptierten Antwort von Sean AO Harney und dem daraus resultierenden Kommentar von Cort3z die beste Lösung zu sein.
Verwendete das folgende Snippet:
Hoffe das könnte jemandem helfen.
quelle
Ich weiß, dass ich in diesem Thread etwas spät dran bin. Hier ist jedoch meine Antwort, gültig seit Java 7 und höher.
Das folgende Snippet
ist vollkommen zufriedenstellend, da die Methode
isRegularFile
zurückgegeben wird,false
wenn keine Datei vorhanden ist. Daher muss nicht geprüft werden, obFiles.exists(...)
.Beachten Sie, dass andere Parameter Optionen sind, die angeben, wie Links behandelt werden sollen. Standardmäßig werden symbolische Links befolgt.
Aus der Java Oracle-Dokumentation
quelle
Files.notExists
,Files.isDirectory
undFiles.isRegularFile.
die beste Alternative dazu ist:path.toFile().exists()
Es lohnt sich auch, sich mit Commons FileUtils vertraut zu machen. Https://commons.apache.org/proper/commons-io/javadocs/api-2.5/org/apache/commons/io/FileUtils.html Hier finden Sie zusätzliche Methoden zum Verwalten von Dateien und oft besser als JDK.
quelle
Zum Beispiel, wenn Sie ein Dateiverzeichnis haben und prüfen möchten, ob es existiert
exists
gibt false zurück, wenn die Datei nicht vorhanden istQuelle: https://alvinalexander.com/java/java-file-exists-directory-exists
quelle
Einfaches Beispiel mit guten Codierungspraktiken und Abdeckung aller Fälle:
Referenz und weitere Beispiele unter
https://zgrepcode.com/examples/java/java/nio/file/filealreadyexistsexception-implementations
quelle
Wenn Sie
File
in einem Verzeichnis nach einem suchen möchtendir
und überprüfen Sie das
check
Ergebnisquelle
wird den Trick machen
quelle
Verwenden Sie den Dateikonstruktor nicht mit String.
Dies funktioniert möglicherweise nicht!
Verwenden Sie stattdessen URI:
quelle
File.exists()
Um zu überprüfen, ob eine Datei vorhanden ist, wird ein boolescher Wert zurückgegeben, der den Status des Überprüfungsvorgangs angibt. true, wenn die Datei vorhanden ist; false wenn nicht vorhanden.quelle
Sie können den folgenden Code verwenden, um zu überprüfen:
quelle
Sie können es so machen
quelle
File.is Exist()
oderFiles.isRegularFile()
in JDK 8Es gibt einen bestimmten Zweck, diese Methoden zu entwerfen. Wir können nicht sagen, dass Sie jemanden verwenden, um zu überprüfen, ob eine Datei vorhanden ist oder nicht.
quelle
Um zu überprüfen, ob eine Datei vorhanden ist, importieren Sie einfach die Bibliothek java.io. *
Quelle: http://newsdivariotipo.altervista.org/java-come-controllare-se-un-file-esiste/
quelle