如何在创建文件之前测试文件是否存在

How to test if a file exists before creating it

本文关键字:文件 测试 是否 存在 创建      更新时间:2023-10-16

我想看看文件是否存在。如果它不存在,那么我想创建它。顺便说一下,我用的是Linux。

你不能可靠地做到这一点。在检查文件是否存在和创建文件之间,可能会有另一个进程创建它。

您应该继续创建文件。根据您尝试做的更大的事情,如果文件已经存在,您可能希望使用以下选项之一来执行操作:

  • 修改之前的内容:open("file", O_RDWR|O_CREAT, 0666)
  • 删除前面的内容:open("file", O_WRONLY|O_CREAT|O_TRUNC, 0666)
  • 附加在前面的内容之后:open("file", O_WRONLY|O_CREAT|O_APPEND, 0666)
  • 操作失败:open("file", O_WRONLY|O_CREAT|O_EXCL, 0666)

它们中的大多数,但不幸的是不是全部,在更高级别的iostream接口中都有等价的。也可能有一种方法将iostream封装在从open获得的文件描述符周围,这取决于您使用的是哪个c++库。

另外,我应该提到,如果您想要自动替换文件的内容(因此没有进程看到不完整的文件),唯一的方法是将新内容写入文件,然后使用rename将其移动到旧文件上。