我正在尝试用Java实现以下操作,但不确定如何:
/*
* 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
}
}
我已经可以使用某个功能了atomicCreateFile()
吗?
编辑:哦,我不确定File.createNewFile()是否足以满足我的需求。如果我打了个电话f.createNewFile()
,然后在它返回到打开文件进行写入之间又有人删除了文件,该怎么办?有没有办法我既可以创建文件又可以打开文件以进行写入和锁定,而这一切都一次完成了呢?我需要为此担心吗?
File.createNewFile()
仅在不存在的情况下创建文件。
编辑:基于您希望在创建文件后锁定文件的新描述,您可以使用java.nio.channels.FileLock
对象来锁定文件。就像您希望的那样,没有一行可以创建和锁定。另外,请参阅此SO 问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句