Ich versuche, die folgende Operation in Java und bin nicht sicher, zu implementieren, wie:Wie erstelle ich eine Datei nur in Java, wenn sie noch nicht existiert?
/*
* write data (Data is defined in my package)
* to a file only if it does not exist, return success
*/
boolean writeData(File f, Data d)
{
FileOutputStream fos = null;
try
{
fos = atomicCreateFile(f);
if (fos != null)
{
/* write data here */
return true;
}
else
{
return false;
}
}
finally
{
fos.close(); // needs to be wrapped in an exception block
}
}
Gibt es eine Funktion, die bereits vorhanden ist, dass ich für atomicCreateFile()
verwenden kann?
bearbeiten: Uh oh, ich bin mir nicht sicher, dass File.createNewFile() ist ausreichend für meine Bedürfnisse. Was passiert, wenn ich f.createNewFile()
und dann zwischen der Zeit, die es zurückgibt und ich öffne die Datei zum Schreiben, jemand anderes hat die Datei gelöscht? Gibt es eine Möglichkeit, die Datei sowohl zu erstellen als auch zu öffnen, um sie zu schreiben + zu sperren, alles auf einen Schlag? Muss ich mir darüber Gedanken machen?
doh! Wie habe ich das vermisst? :/ Vielen Dank. Mein Verstand war in C++ Land. –
aktualisiert meine Antwort basierend auf Ihrer Bearbeitung –
ok, danke. Nun, es hört sich so an, als müsste ich über außergewöhnliche Bedingungen nachdenken. (z.B.wenn die createNewFile() erfolgreich ist, aber einen Dateikanal öffnet und eine Dateisperre fehlschlägt) –