Estoy tratando de poner en práctica la operación siguiente en Java y no estoy seguro de cómo:cómo crear un archivo en Java solo si aún no existe?
/*
* 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
}
}
¿Existe una función que existe ya que puedo usar para atomicCreateFile()
?
editar: Uh oh, no estoy seguro de que File.createNewFile() sea suficiente para mis necesidades. ¿Qué pasa si llamo al f.createNewFile()
y luego entre el momento en que regresa y abro el archivo para escribir, alguien más ha eliminado el archivo? ¿Hay alguna manera de que pueda crear el archivo y abrirlo para escribir + bloquearlo, todo de una sola vez? ¿Debo preocuparme por esto?
DOH! ¿Cómo extrañé eso? :/ Gracias. Mi mente ha estado en tierra C++. –
actualizó mi respuesta en función de su edición –
bien, gracias. Bueno, parece que tengo que pensar detenidamente sobre las condiciones excepcionales. (p.ej.si el createNewFile() tiene éxito pero abrir un canal de archivos y obtener un bloqueo de archivos falla) –