Próbuję realizować następujące działania w Javie i nie jestem pewien, jak:jak utworzyć plik w Javie, tylko jeśli jeszcze nie istnieje?
/*
* 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
}
}
Czy istnieje funkcja, która już istnieje, że można używać do atomicCreateFile()
?
edytuj: Uh oh, nie jestem pewien, że File.createNewFile() jest wystarczająca dla moich potrzeb. Co się stanie, jeśli zadzwonię pod numer f.createNewFile()
, a następnie pomiędzy czasem, który zwróci i otworzę plik do napisania, ktoś inny usunął plik? Czy istnieje sposób, w jaki mogę zarówno stworzyć plik i otworzyć go do pisania + zablokować go, wszystko za jednym zamachem? Czy muszę się tym martwić?
doh! jak to przegapiłem? :/ dzięki. Mój umysł był w ziemi C++. –
zaktualizowałem moją odpowiedź na podstawie twojej edycji –
ok, dziękuję. Wygląda na to, że muszę dokładnie przemyśleć wyjątkowe warunki. (na przykład.jeśli funkcja createNewFile() powiedzie się, ale otworzy się kanał plików i zablokowanie pliku się nie powiedzie) –