Ich suche nach einer sicheren Möglichkeit, eine temporäre Datei in Java zu erstellen. Mit sicher meine ich Folgendes:
- Der Name sollte auch unter möglichen Rennbedingungen eindeutig sein (z. B. ruft ein anderer Thread zur gleichen Zeit dieselbe Funktion auf oder ein anderer Prozess führt diesen Code gleichzeitig aus).
- Die Datei sollte auch unter potenziellen Rennbedingungen privat sein (z. B. versucht ein anderer Benutzer, die Datei mit hoher Geschwindigkeit zu ändern).
- Ich kann es anweisen, die Datei zu löschen, ohne dass ich generisch löschen muss, und riskieren, die falsche Datei zu löschen
- Im Idealfall sollte sichergestellt werden, dass die Datei gelöscht wird, auch wenn eine Ausnahme ausgelöst wird, bevor ich die Möglichkeit dazu bekomme
- Die Datei sollte standardmäßig einen vernünftigen Speicherort haben (z. B. das von der JVM angegebene tmp-Verzeichnis, standardmäßig das temporäre Systemverzeichnis).
java
temporary-files
SRobertJames
quelle
quelle
File f = File.createTempFile(prefix, extension)
. Es wird in das temporäre Verzeichnis gestellt. Undf.deleteOnExit()
damit wird es beim Beenden automatisch gelöscht.Antworten:
Verwenden Sie
File.createTempFile()
.Erstellt eine Datei im temporären Verzeichnis, wie:
quelle
tempFile.delete()
zusätzlich zu demdeleteOnExit
(da ich nicht möchte, dass Horden von temporären Dateien vor dem Beenden herumhängen)?Seit Java 7 gibt es die neue Datei-API "NIO2", die neue Methoden zum Erstellen von temporären Dateien und Verzeichnissen enthält. Sehen
z.B
oder
quelle