Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows API的CreateFile()中的OPEN_ALWAYS和CREATE_ALWAYS之间的差异_C_Windows_Createfile - Fatal编程技术网

Windows API的CreateFile()中的OPEN_ALWAYS和CREATE_ALWAYS之间的差异

Windows API的CreateFile()中的OPEN_ALWAYS和CREATE_ALWAYS之间的差异,c,windows,createfile,C,Windows,Createfile,有人能解释一下windows API函数的创建配置OPEN\u ALWAYS和CREATE\u ALWAYS之间的区别吗 在我看来,他们似乎都只是“如果文件不存在,就创建文件”。create\u始终如果文件已经存在,也会截断内容。另一方面,OPEN\u ALWAYS将不会删除现有文件 以下是不同值以表格形式工作的方式: | When the file... This argument: |

有人能解释一下windows API函数的创建配置
OPEN\u ALWAYS
CREATE\u ALWAYS
之间的区别吗


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

create\u始终
如果文件已经存在,也会截断内容。另一方面,
OPEN\u 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

这正是我所希望的——有趣的是,文档的表述如此模糊。谢谢,桌子不错。一些随机想法:如果文件存在,有3种结果:截断、失败、打开;如果文件不存在,则有两种结果:创建、失败。因此,3*2=6种不同的行为。由于Fails/Fails完全没有用处,所以只剩下5种可能性,它们就在这里!另外,要添加到该表中的重要内容是,当打开现有文件时(当指定了
OPEN\u ALWAYS
OPEN\u existing
时),文件指针将指向文件的开头。因此,如果您随后开始写入该文件,它将覆盖文件的开头,而不会将其附加到文件的结尾。要更改此设置,请在写入前使用带有
FILE\u END
标志的
SetFilePointerEx
函数。@ahmd0其中
WriteFile
s的结尾实际上取决于访问掩码,如果您只请求FILE append,它将在NT上写入文件的结尾。