1、创建文件
在 Windows 编程中,CreateFile()
是一个 Windows API 函数,用于创建或打开一个文件、文件夹、通信资源、磁盘分区等。这个函数提供了比标准 C++ 文件操作更详细的控制,包括安全属性、文件共享模式、文件创建方式等。
函数原型
HANDLE CreateFile(
LPCSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDisposition,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile
);
参数说明
- lpFileName: 要创建或打开的文件名。
- dwDesiredAccess: 访问文件的方式,如读 (
GENERIC_READ
)、写 (GENERIC_WRITE
) 或两者 (GENERIC_READ | GENERIC_WRITE
)。 - dwShareMode: 文件共享模式,如共享读 (
FILE_SHARE_READ
)、共享写 (FILE_SHARE_WRITE
)。 - lpSecurityAttributes: 指向
SECURITY_ATTRIBUTES
结构的指针,可以为NULL
。 - dwCreationDisposition: 控制如何创建或打开文件,如
CREATE_NEW
,CREATE_ALWAYS
,OPEN_EXISTING
,OPEN_ALWAYS
,TRUNCATE_EXISTING
。 - dwFlagsAndAttributes: 文件或设备的属性,如
FILE_ATTRIBUTE_NORMAL
。 - hTemplateFile: 用于复制文件属性的模板文件的句柄,通常设置为
NULL
。
返回值
如果函数成功,返回值是新创建或打开的文件的句柄。如果函数失败,返回值是 INVALID_HANDLE_VALUE
。可以调用 GetLastError()
函数来获取更多错误信息。
示例代码
#include <windows.h>
#include <iostream>
int main() {
// 创建或打开文件
HANDLE hFile = CreateFile(
"example.txt", // 文件名
GENERIC_READ | GENERIC_WRITE, // 读写访问
0, // 不共享文件
NULL, // 默认安全属性
CREATE_NEW, // 创建新文件,如果文件存在则失败
FILE_ATTRIBUTE_NORMAL, // 普通文件属性
NULL // 没有模板文件
);
if (hFile == INVALID_HANDLE_VALUE) {
std::cerr << "Failed to create or open file. Error: " << GetLastError() << std