我正在尝试用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
}
}
Run Code Online (Sandbox Code Playgroud)
是否存在我可以使用的功能atomicCreateFile()?
编辑:哦,我不确定File.createNewFile()是否足以满足我的需求.如果我调用f.createNewFile()然后在它返回的时间和我打开文件进行写入之间,其他人已经删除了该文件,该怎么办?有没有办法我可以创建文件并打开它来写入+锁定它,一举一动?我需要担心吗?
Tay*_*ese 19
File.createNewFile() 仅在尚不存在的情况下创建文件.
编辑:根据您想要在创建文件后锁定文件的新描述,您可以使用该java.nio.channels.FileLock对象锁定文件.就像你希望的那样,没有一条线创造和锁定.另外,请看这个问题.
当且仅当具有此名称的文件尚不存在时,以原子方式创建由此抽象路径名命名的新空文件.检查文件是否存在以及文件的创建(如果不存在)是针对可能影响文件的所有其他文件系统活动的原子操作.
编辑
杰森,至于你关注的问题,如果你继续阅读我们发给你的链接,那就有一个注意事项.
注意:此方法不应用于文件锁定,因为无法使生成的协议可靠地工作.的的FileLock 设施应改为使用.
我想你也应该真正阅读这一部分:
| 归档时间: |
|
| 查看次数: |
38151 次 |
| 最近记录: |