内容简介:Windows 打开文件的 API 中提供了多种不同的文件打开方式。你可以根据你的业务场景选择适合你的文件打开方式。
Windows 打开文件的 API 中提供了多种不同的文件打开方式。你可以根据你的业务场景选择适合你的文件打开方式。
Windows API
OpenFile
方法只能打开已经存在的文件,而使用 CreateFile
则可以在打开文件的同时应对不存在文件时的创建。
HANDLE CreateFileW( LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile );
其中 dwCreationDisposition
参数用来指定文件打开的时候如何处理文件的创建和追加行为。
dwCreationDisposition
dwCreationDisposition
可以传入 5 种不同的值。
CREATE_NEW CREATE_ALWAYS OPEN_EXISTING OPEN_ALWAYS TRUNCATE_EXISTING
CREATE_NEW
如果文件不存在,则创建一个文件。如果文件不存在,则执行失败,通过 GetLastError
可以得到错误码 ERROR_FILE_EXISTS
(80)。
CREATE_ALWAYS
如果文件不存在,则创建一个新的文件。如果文件已经存在,则此文件将完全被复写。
基于此文件流的修改会完全复写文件。也就是说,如果原文件内容是 walterlv
,通过此文件流写入 111
,那么最终文件内容是 111
。
OPEN_EXISTING
如果文件存在,则打开文件。如果文件不存在,通过 GetLastError
可以得到错误码 ERROR_FILE_NOT_FOUND
(2)。
基于此文件流的修改不会截断文件。也就是说,如果原文件内容是 walterlv
,通过此文件流写入 111
,那么最终文件内容是 111terlv
。
OPEN_ALWAYS
如果文件存在,那么会成功打开文件;并且也可以通过 GetLastError
可以得到状态 ERROR_ALREADY_EXISTS
(183)。如果文件不存在,新建一个文件。
基于此文件流的修改不会截断文件。也就是说,如果原文件内容是 walterlv
,通过此文件流写入 111
,那么最终文件内容是 111terlv
。
TRUNCATE_EXISTING
如果文件存在,则打开后文件的长度直接变为 0。如果文件不存在,通过 GetLastError
可以得到错误码 ERROR_FILE_NOT_FOUND
(2)。
总结表
dwCreationDisposition |
如果文件存在 | 如果文件不存在 |
---|---|---|
CREATE_NEW |
ERROR_FILE_EXISTS |
新建 |
CREATE_ALWAYS |
截断 | 新建 |
OPEN_EXISTING |
打开 | ERROR_FILE_NOT_FOUND |
OPEN_ALWAYS |
打开 | 新建 |
TRUNCATE_EXISTING |
截断 | ERROR_FILE_NOT_FOUND |
所有这些打开模式都不会修改到文件的属性(Attribute),包括创建时间、针对用户的权限设置。所以如果你希望连这些属性都不需要,而是完完全全创建新的文件,那么请先将原来的文件删除。
参考资料
以上所述就是小编给大家介绍的《Win32 方法 CreateFile 中选择合适的文件打开模式(CREATE_NEW, CREATE_ALWAYS, OPEN_EXISTING, O...》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 图计算黑科技:打开中文词嵌入训练实践新模式
- .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
- 怎样打开XML文件?xml文件如何打开?
- Android获取软键盘的高度、键盘的打开与关闭、监听键盘处于打开还是关闭状态
- php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
- golang hijack打开方式
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
技术领导之路(中英文对照)
Gerald M.Weinberg / 余晟 / 电子工业出版社 / 2009-12 / 69.00元
《技术领导之路:全面解决问题的途径(中英文对照)》内容简介:搞定技术问题并不简单,但与人打交到也并非易事。作为一个技术专家,你是否在走上管理岗位时遇到了各种不适“症状”?《技术领导之路:解决问题的有机方法》一书将帮助你成为一个成功的解决问题的领导者。书中温伯格从一个反思者的角度阐述了要成为一个成功的解决问题的领导者必备的3个技能——MOI,即激励(Motivation)、组织(Organizati......一起来看看 《技术领导之路(中英文对照)》 这本书的介绍吧!