谁能解释Windows API的CreateFile()函数的创建处置OPEN_ALWAYSCREATE_ALWAYS之间的区别是什么?

在我看来,他们俩都只是“如果文件不存在就创建它”。

最佳答案

如果文件已经存在,CREATE_ALWAYS也会截断内容。另一方面,OPEN_ALWAYS不会破坏已经存在的文件。

以下是不同值以表格形式工作的方式:

                         |                    When the file...
This argument:           |             Exists            Does not exist
-------------------------+------------------------------------------------------
CREATE_ALWAYS            |            Truncates             Creates
CREATE_NEW         +-----------+        Fails               Creates
OPEN_ALWAYS     ===| does this |===>    Opens               Creates
OPEN_EXISTING      +-----------+        Opens                Fails
TRUNCATE_EXISTING        |            Truncates              Fails

09-06 10:48