如果一个文件尚不存在,如何用Java创建文件?

Jas*_*n S 9 java file-io

我正在尝试用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对象锁定文件.就像你希望的那样,没有一条线创造和锁定.另外,请看这个问题.


Osc*_*Ryz 7

File.createNewFile()

当且仅当具有此名称的文件尚不存在时,以原子方式创建由此抽象路径名命名的新空文件.检查文件是否存在以及文件的创建(如果不存在)是针对可能影响文件的所有其他文件系统活动的原子操作.

编辑

杰森,至于你关注的问题,如果你继续阅读我们发给你的链接,那就有一个注意事项.

注意:此方法不应用于文件锁定,因为无法使生成的协议可靠地工作.的的FileLock 设施应改为使用.

我想你也应该真正阅读这一部分:

ALT