仅在不存在的情况下如何用Java创建文件?

杰森S:

我正在尝试用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(),然后在它返回到打开文件进行写入之间又有人删除了文件,该怎么办?有没有办法我既可以创建文件又可以打开文件以进行写入和锁定,而这一切都一次完成了呢?我需要为此担心吗?

泰勒·里斯(Taylor Leese):

File.createNewFile() 仅在不存在的情况下创建文件。

编辑:基于您希望在创建文件后锁定文件的新描述,您可以使用java.nio.channels.FileLock对象来锁定文件。就像您希望的那样,没有一行可以创建和锁定。另外,请参阅此SO 问题

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

只有在python不存在的情况下,才能安全地创建文件

Scala Slick,仅在不存在的情况下如何创建模式

SQLiteDatabase仅在尚不存在的情况下添加

仅在不存在的情况下插入记录

仅在不存在的情况下插入数据

如何仅在不存在的情况下将值附加到数组,如果不存在则将其删除?

仅在源目录中不存在的情况下删除目标目录中的文件

仅在尚不存在的情况下如何实现方法

仅在不存在的情况下如何将对象添加到数组

仅在不存在特定Cookie的情况下,如何运行此JavaScript函数和HTML

Java FileOutputStream创建文件(如果不存在)

批处理:如何在不存在的情况下创建快捷方式

仅在不存在int的情况下将int添加到arraylist

MySQL仅在不存在但有更多条件的情况下插入

SQL Record仅在不存在零值的情况下返回

仅在不存在的情况下将行添加到Pandas DataFrame

SQL仅在id不存在的情况下将新行插入MYSQL表中

猫鼬-创建文档(如果不存在),否则,在两种情况下均会更新并返回文档

如何仅在文件存在的情况下将其删除?

如何仅在项目不存在但如何返回项目ID的情况下发布到API?

NodeJS文件流 - 如果文件不存在,如何创建文件?

如何在不存在.msi文件的情况下使用产品ID guid使用msiexec进行卸载

我如何打开文件进行读写,如果不存在则创建文件而不将其截断?

如何在Perl中读取文件,如果不存在则创建文件?

如何将输出重定向到文件,如果不存在则不创建文件?

SQLite:创建表并在表不存在的情况下添加一行

默认情况下,Angular JS创建段落(如果不存在)

Ansible模块仅在文件不存在时才创建文件并写入一些数据

PHP创建文件夹(如果不存在)