Windows API的CreateFile()中OPEN_ALWAYS和CREATE_ALWAYS之间的区别

Kri*_*ege 23 c windows createfile

任何人都可以解释创建配置OPEN_ALWAYS和Windows API CREATE_ALWAYSCreateFile()函数之间的区别吗?

对我来说,似乎他们都只是'创建文件,如果它还不存在'.

Jon*_*Jon 57

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
Run Code Online (Sandbox Code Playgroud)

  • 好桌子.一些随机的想法:如果文件存在,则有3个结果:_Truncates,Fails,Opens_; 如果文件不存在则有2个结果:_Creates,Fails_.所以3*2 = 6种不同的行为.由于_Fails/Fails_完全无用,只剩下5种可能性,而且它们就在这里! (5认同)
  • 这正是我所希望的 - 有趣的是文档的表述如此模糊。谢谢。 (2认同)