C++中的CreateFile函数怎么使用

avatar
作者
筋斗云
阅读量:4

在C++中,CreateFile函数可以用来创建或打开一个文件。它的原型是:

HANDLE CreateFile(LPCTSTR 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:其他进程可以写入文件。

  • FILE_SHARE_READ | FILE_SHARE_WRITE:其他进程可以读写文件。

  • lpSecurityAttributes:安全属性,用于指定文件的安全描述符。

  • dwCreationDisposition:文件的创建方式,指定当文件不存在时应该如何创建。常见的取值有:

  • CREATE_NEW:如果文件不存在,则创建新文件;如果文件存在,则返回错误。

  • CREATE_ALWAYS:如果文件不存在,则创建新文件;如果文件存在,则覆盖文件。

  • OPEN_EXISTING:如果文件存在,则打开文件;如果文件不存在,则返回错误。

  • OPEN_ALWAYS:如果文件存在,则打开文件;如果文件不存在,则创建新文件。

  • dwFlagsAndAttributes:文件属性和标志,指定文件的属性和其他特性。常见的取值有:

  • FILE_ATTRIBUTE_NORMAL:普通文件。

  • FILE_FLAG_WRITE_THROUGH:直接写入磁盘,不缓冲到内存。

  • FILE_FLAG_OVERLAPPED:允许异步(非阻塞)I/O操作。

  • hTemplateFile:模板文件的句柄,用于指定文件的扩展属性。

CreateFile函数的返回值是一个HANDLE类型的句柄,用于后续操作文件。

下面是一个使用CreateFile函数创建文件的示例:

#include <Windows.h> int main() { LPCWSTR filePath = L"C:\\path\\to\\file.txt";   // 文件路径 // 打开或创建文件 HANDLE hFile = CreateFile(filePath, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile == INVALID_HANDLE_VALUE) { // 文件打开或创建失败 return -1; } // 写入文件 char buffer[] = "Hello, World!"; DWORD bytesWritten; if (!WriteFile(hFile, buffer, sizeof(buffer), &bytesWritten, NULL)) { // 写入文件失败 return -1; } // 关闭文件 CloseHandle(hFile); return 0; } 

该示例中,通过CreateFile函数创建或打开一个文件,并使用WriteFile函数向文件中写入数据。最后使用CloseHandle函数关闭文件的句柄。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!