java - 仅当一个文件不存在时如何在Java中创建一个文件?

标签 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
    }
}

是否已经存在可用于 atomicCreateFile() 的函数?

编辑: 哦,我不确定 File.createNewFile() 是否足以满足我的需求。如果我调用 f.createNewFile() 然后在它返回和我打开文件进行写入之间,其他人删除了文件怎么办?有没有一种方法可以同时创建文件并打开它进行写入+锁定它,一口气完成?我需要担心这个吗?

最佳答案

File.createNewFile()仅在文件不存在时才创建文件。

编辑:根据您想要在文件创建后锁定文件的新描述,您可以使用 java.nio.channels.FileLock对象锁定文件。虽然没有像您希望的那样创建和锁定一行。另外,请参阅此 SO question .

关于java - 仅当一个文件不存在时如何在Java中创建一个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1556127/

相关文章:

Java 线程池吞吐量

java - 如何动态计算颜色列表?

c# - C#处理文件错误

c++ - 在 gcc 中编译

c++ - 文件输出中出现错误字符

java - 工具栏和状态栏之间的空白

java - 我如何通过 Ebean 检查对象的存在?

c# - 使用 File.AppendAllText 导致 "Process cannot access the file, already in use"错误

java - 无法附加到 java 中的文本文件。可以创建 .txt 文件并添加数据,但会被覆盖

java - Hibernate Search(Lucene 索引)如何工作?