我正在尝试用 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 question .
关于java - 仅当一个文件不存在时如何在Java中创建一个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1556127/