J'essaie de mettre en œuvre l'opération suivante en Java et ne suis pas sûr de savoir comment:comment créer un fichier en Java seulement s'il n'en existe pas déjà?
/*
* 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
}
}
Y at-il une fonction qui existe déjà que je peux utiliser pour atomicCreateFile()
?
edit: Euh oh, je ne suis pas sûr que File.createNewFile() soit suffisant pour mes besoins. Que faire si j'appelle f.createNewFile()
et puis entre le moment où il revient et j'ouvre le fichier pour l'écriture, quelqu'un d'autre a supprimé le fichier? Est-il possible de créer le fichier et de l'ouvrir pour l'écrire + le verrouiller, d'un seul coup? Ai-je besoin de m'inquiéter à ce sujet?
doh! comment ai-je manqué ça? :/ Merci. Mon esprit a été en terre C++. –
mis à jour ma réponse basée sur votre édition –
ok, merci. Eh bien, il semble que je dois réfléchir soigneusement aux conditions exceptionnelles. (par exemple.si le createNewFile() réussit mais ouvre un canal de fichier et obtient un verrou de fichier échoue) –