在C++中,CreateFile、ReadFile和WriteFile是一组用于文件和设备IO操作的函数。它们的作用和使用方法如下:
-
CreateFile函数:
- 创建或打开文件、设备、管道等对象,并返回一个用于访问该对象的句柄。
- 使用该句柄进行后续的文件读写操作。
- 创建文件时可指定访问模式、共享模式、文件属性等参数。
使用方法示例:
HANDLE hFile = CreateFile( L"C:\\path\\to\\file", // 文件名 GENERIC_READ | GENERIC_WRITE, // 访问模式 0, // 共享模式 NULL, // 安全描述符 OPEN_EXISTING, // 创建标志 FILE_ATTRIBUTE_NORMAL, // 文件属性 NULL // 模板句柄 ); if (hFile != INVALID_HANDLE_VALUE) { // 成功打开文件,进行读写操作 } else { // 打开文件失败,处理异常情况 }
-
ReadFile函数:
- 从已打开的文件或设备中读取数据。
- 读取的数据存储在指定的缓冲区中,可以指定要读取的字节数。
- 函数调用成功后,实际读取的字节数保存在传入的变量中。
使用方法示例:
DWORD dwBytesRead; BYTE buffer[1024]; ReadFile(hFile, buffer, sizeof(buffer), &dwBytesRead, NULL); // dwBytesRead 中保存实际读取的字节数 // 对读取到的数据进行处理
-
WriteFile函数:
- 将数据写入已打开的文件或设备。
- 要写入的数据存储在一个指定的缓冲区中,可以指定写入的字节数。
- 函数调用成功后,实际写入的字节数保存在传入的变量中。
使用方法示例:
DWORD dwBytesWritten; BYTE data[] = "Hello, World!"; WriteFile(hFile, data, sizeof(data), &dwBytesWritten, NULL); // dwBytesWritten 中保存实际写入的字节数 // 继续进行其他操作
需要注意的是,上述函数中的句柄变量(如hFile)必须是有效的句柄,而且对应的文件或设备必须已经成功打开。同时,我们还可以根据具体需求设置其他参数,如读写操作的偏移量、重叠(overlapped)方式等。