Gibt es eine Möglichkeit, FileOutputStream so zu verwenden, dass eine Datei (String-Dateiname) erstellt wird, wenn sie nicht vorhanden ist?
FileOutputStream oFile = new FileOutputStream("score.txt", false);
java
file
file-io
new-operator
fileoutputstream
Stefan Dunn
quelle
quelle
createNewFile()
Methode, wie in meinem Beispiel gezeigt.createNewFile()
prüft selbst atomar die Existenz der Datei.createNewFile()
ist hier reine Zeitverschwendung. Das System wird das bereits tun. Sie zwingen es nur, zweimal hinzuschauen.Vor dem Erstellen einer Datei müssen alle Verzeichnisse der Eltern erstellt werden.
Verwenden
yourFile.getParentFile().mkdirs()
quelle
Sie können eine leere Datei erstellen, unabhängig davon, ob sie vorhanden ist oder nicht ...
Wenn Sie die Datei verlassen möchten, falls vorhanden ...
Sie erhalten nur dann eine FileNotFoundException, wenn Sie versuchen, die Datei in einem nicht vorhandenen Verzeichnis zu erstellen.
quelle
FileNotFoundException
in beiden Fällen.Geben Sie dies
f
an IhrenFileOutputStream
Konstruktor weiter.quelle
FileUtils von Apache Commons ist ein ziemlich guter Weg, um dies in einer einzigen Zeile zu erreichen.
Dadurch werden übergeordnete Ordner erstellt, wenn sie nicht vorhanden sind, und eine Datei erstellt, wenn sie nicht vorhanden ist, und eine Ausnahme ausgelöst, wenn das Dateiobjekt ein Verzeichnis ist oder nicht beschrieben werden kann. Dies entspricht :
Alle oben genannten Vorgänge lösen eine Ausnahme aus, wenn der aktuelle Benutzer den Vorgang nicht ausführen darf.
quelle
Datei erstellen, falls nicht vorhanden. Wenn die Datei beendet wird, löschen Sie ihren Inhalt:
quelle
Geben Sie nur eine alternative Möglichkeit zum Erstellen der Datei an, wenn diese nicht mithilfe von Pfad und Dateien vorhanden ist.
quelle
Sie können möglicherweise eine erhalten,
FileNotFoundException
wenn die Datei nicht vorhanden ist.In der Java-Dokumentation heißt es:
Wenn Sie Java 7 verwenden, können Sie das Paket java.nio verwenden:
quelle
new FileOutputStream(f)
In den meisten Fällen wird eine Datei erstellt, aber leider erhalten Sie eine FileNotFoundExceptionvon Javadoc
Mit anderen Worten, es könnte viele Fälle geben, in denen Sie FileNotFoundException erhalten, was bedeutet, dass Ihre Datei nicht erstellt werden konnte, aber Sie konnten den Grund für das Fehlschlagen der Dateierstellung nicht finden.
Eine Lösung besteht darin, jeden Aufruf der Datei-API zu entfernen und stattdessen die Datei-API zu verwenden, da diese eine viel bessere Fehlerbehandlung bietet. Ersetzen Sie normalerweise alle
new FileOutputStream(f)
durchFiles.newOutputStream(p)
.In Fällen, in denen Sie die Datei-API verwenden müssen (weil Sie beispielsweise eine externe Schnittstelle mit Datei verwenden), ist die Verwendung
Files.createFile(p)
eine gute Möglichkeit, um sicherzustellen, dass Ihre Datei ordnungsgemäß erstellt wurde, und wenn nicht, wissen Sie, warum sie nicht funktioniert hat. Einige Leute haben oben kommentiert, dass dies überflüssig ist. Es ist wahr, aber Sie erhalten eine bessere Fehlerbehandlung, die in einigen Fällen erforderlich sein kann.quelle