Wie kann ich prüfen, ob eine Datei vorhanden ist, bevor Sie sie zum Lesen in Java öffnen? (äquivalent zu Perls -e $filename
).
Die einzige ähnliche Frage zu SO befasst sich mit dem Schreiben der Datei und wurde daher mit FileWriter beantwortet, was hier offensichtlich nicht anwendbar ist.
Wenn möglich würde ich es vorziehen, dass ein echter API-Aufruf true/false zurückgibt, im Gegensatz zu einigen "Aufruf-APIs, um eine Datei zu öffnen und abzufangen, wenn eine Ausnahme ausgelöst wird, die Sie im Text nach" no file "prüfen, aber ich kann mit der letztere.
Verwendung von Java.io.File
:
File f = new File(filePathString);
if(f.exists() && !f.isDirectory()) {
// do something
}
Ich würde empfehlen, isFile()
anstelle von exists()
zu verwenden. Meistens prüfen Sie, ob der Pfad auf eine Datei verweist, und nicht nur, dass sie existiert. Denken Sie daran, dass exists()
true zurückgibt, wenn Ihr Pfad auf ein Verzeichnis verweist.
new File("path/to/file.txt").isFile();
new File("C:/").exists()
gibt true zurück, erlaubt aber nicht das Öffnen und Lesen als Datei.
Durch die Verwendung von nio in Java SE 7
import Java.nio.file.*;
Path path = Paths.get(filePathString);
if (Files.exists(path)) {
// file exist
}
if (Files.notExists(path)) {
// file is not exist
}
Wenn sowohl Exists als auch NotExists falsch sind, kann das Vorhandensein der Datei nicht überprüft werden. (vielleicht kein Zugriffsrecht auf diesen Pfad)
Sie können überprüfen, ob der Pfad ein Verzeichnis oder eine reguläre Datei ist.
if (Files.isDirectory(path)) {
// path is directory
}
if (Files.isRegularFile(path)) {
// path is regular file
}
Bitte überprüfen Sie dieses Java SE 7-Tutorial .
Verwendung von Java 8:
if(Files.exists(Paths.get(filePathString))) {
// do something
}
File f = new File(filePathString);
Dadurch wird keine physische Datei erstellt. Erzeugt nur ein Objekt der Klasse File. Um eine Datei physisch zu erstellen, müssen Sie sie explizit erstellen:
f.createNewFile();
Mit f.exists()
kann also geprüft werden, ob eine solche Datei existiert oder nicht.
f.isFile() && f.canRead()
Sie können Folgendes verwenden: File.exists()
erster Treffer für "Java-Datei existiert" bei Google:
import Java.io.*;
public class FileTest {
public static void main(String args[]) {
File f = new File(args[0]);
System.out.println(f + (f.exists()? " is found " : " is missing "));
}
}
Dafür gibt es mehrere Möglichkeiten.
Im Falle von nur für die Existenz. Es kann sich um eine Datei oder ein Verzeichnis handeln.
new File("/path/to/file").exists();
Auf Datei prüfen
File f = new File("/path/to/file");
if(f.exists() && f.isFile()) {}
Überprüfen Sie das Verzeichnis.
File f = new File("/path/to/file");
if(f.exists() && f.isDirectory()) {}
Java 7 Weg.
Path path = Paths.get("/path/to/file");
Files.exists(path) // Existence
Files.isDirectory(path) // is Directory
Files.isRegularFile(path) // Regular file
Files.isSymbolicLink(path) // Symbolic Link
Nicht Fangen Sie einfach den FileNotFoundException.
Das Dateisystem muss prüfen, ob die Datei trotzdem vorhanden ist. Es macht keinen Sinn, das alles zweimal zu machen, und es gibt mehrere Gründe, warum nicht:
Versuchen Sie nicht, das System zu erraten. Es weiß Versuchen Sie nicht, die Zukunft vorherzusagen. Im Allgemeinen können Sie am besten prüfen, ob die Ressource any verfügbar ist, indem Sie versuchen, sie zu verwenden.
Für mich eine Kombination der akzeptierten Antwort von Sean A.O. Harney und der daraus resultierende Kommentar von Cort3z scheint die beste Lösung zu sein.
Verwendete den folgenden Ausschnitt:
File f = new File(filePathString);
if(f.exists() && f.isFile()) {
//do something ...
}
Hoffe das könnte jemandem helfen.
Es lohnt sich auch, sich mit Commons FileUtils https://commons.Apache.org/proper/commons-io/javadocs/api-2.5/org/Apache/commons/io/FileUtils.html .__ vertraut zu machen hat zusätzliche Methoden zum Verwalten von Dateien und ist oft besser als JDK.
Ich weiß, dass ich in diesem Thread etwas spät bin. Hier ist jedoch meine Antwort, gültig ab Java 7.
Der folgende Ausschnitt
if(Files.isRegularFile(Paths.get(pathToFile))) {
// do something
}
ist vollkommen zufriedenstellend, da die Methode isRegularFile
false
zurückgibt, wenn die Datei nicht vorhanden ist. Daher muss nicht geprüft werden, ob Files.exists(...)
.
Beachten Sie, dass andere Parameter Optionen sind, die angeben, wie Links behandelt werden sollen. Standardmäßig werden symbolische Links verfolgt.
Zum Beispiel, wenn Sie ein Dateiverzeichnis haben und prüfen möchten, ob es existiert
File tmpDir = new File("/var/tmp");
boolean exists = tmpDir.exists();
exists
gibt false zurück, wenn die Datei nicht vorhanden ist
source: https://alvinalexander.com/Java/java-file-exists-directory-exists
Einfaches Beispiel mit guten Codierungspraktiken, das alle Fälle abdeckt:
private static void fetchIndexSafely(String url) throws FileAlreadyExistsException {
File f = new File(Constants.RFC_INDEX_LOCAL_NAME);
if (f.exists()) {
throw new FileAlreadyExistsException(f.getAbsolutePath());
} else {
try {
URL u = new URL(url);
FileUtils.copyURLToFile(u, f);
} catch (MalformedURLException ex) {
Logger.getLogger(RfcFetcher.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(RfcFetcher.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Referenz und weitere Beispiele unter
https://zgrepcode.com/examples/Java/java/nio/file/filealreadyexistsexception-implementations
File
in einem Verzeichnis suchen möchten dir
String directoryPath = dir.getAbsolutePath()
boolean check = new File(new File(directoryPath), aFile.getName()).exists();
und überprüfen Sie das Ergebnis check
File.exists()
Um zu überprüfen, ob eine Datei vorhanden ist, wird ein boolescher Wert zurückgegeben, um den Status der Prüfoperation anzuzeigen. true, wenn die Datei existiert; false wenn nicht vorhanden.
File f = new File("c:\\test.txt");
if(f.exists()){
System.out.println("File existed");
}else{
System.out.println("File not found!");
}
new File("/path/to/file").exists();
wird den Trick tun
Verwenden Sie keinen Dateikonstruktor mit String.
Das kann nicht funktionieren!
Verwenden Sie stattdessen URI:
File f = new File(new URI("file:///"+filePathString.replace('\\', '/')));
if(f.exists() && !f.isDirectory()) {
// to do
}
Sie können den folgenden Code zur Überprüfung verwenden:
import Java.io.File;
class Test{
public static void main(String[] args){
File f = new File(args[0]); //file name will be entered by user at runtime
System.out.println(f.exists()); //will print "true" if the file name given by user exists, false otherwise
if(f.exists())
{
//executable code;
}
}
}
Sie können es so machen
import Java.nio.file.Paths;
String file = "myfile.sss";
if(Paths.get(file).toFile().isFile()){
//...do somethinh
}
Es 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.