在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函數關閉文件的句柄。