CreateFile
是Windows API(應(yīng)用程序接口)中的一個(gè)函數(shù),用于在Windows操作系統(tǒng)中創(chuàng)建、打開(kāi)、關(guān)閉或刪除文件。這個(gè)函數(shù)為程序員提供了對(duì)文件進(jìn)行基本操作的接口。
CreateFile
函數(shù)的原型如下:
HANDLE CreateFile(
LPCTSTR FileName, // 文件名
DWORD DesiredAccess, // 訪問(wèn)模式
DWORD ShareMode, // 分享模式
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // 安全屬性
DWORD CreationDisposition, // 創(chuàng)建方式
DWORD FlagsAndAttributes, // 文件標(biāo)志和屬性
HANDLE hTemplateFile // 模板文件句柄
);
參數(shù)說(shuō)明:
FileName
:要?jiǎng)?chuàng)建或打開(kāi)的文件的路徑名。DesiredAccess
:指定訪問(wèn)文件的方式。例如,只讀、只寫(xiě)或讀寫(xiě)等。ShareMode
:指定文件共享的方式。例如,獨(dú)占共享、共享讀寫(xiě)等。lpSecurityAttributes
:指向一個(gè)安全屬性結(jié)構(gòu)體的指針,用于指定文件的安全設(shè)置。如果為NULL
,則文件具有默認(rèn)的安全屬性。CreationDisposition
:指定是創(chuàng)建新文件、打開(kāi)現(xiàn)有文件還是其他操作。例如,CREATE_ALWAYS
表示總是創(chuàng)建新文件,如果文件已存在則覆蓋它;OPEN_EXISTING
表示只打開(kāi)已存在的文件,如果不存在則返回錯(cuò)誤。FlagsAndAttributes
:指定文件的標(biāo)志和屬性。例如,FILE_ATTRIBUTE_NORMAL
表示文件具有正常屬性,即沒(méi)有特殊屬性。hTemplateFile
:指定一個(gè)模板文件的句柄,用于指定文件的創(chuàng)建屬性。如果為NULL
,則使用默認(rèn)屬性創(chuàng)建文件。CreateFile
函數(shù)返回一個(gè)HANDLE
類型的值,表示創(chuàng)建或打開(kāi)的文件句柄。如果函數(shù)執(zhí)行成功,則返回有效的文件句柄;否則返回INVALID_HANDLE_VALUE
。
下面是一個(gè)簡(jiǎn)單的示例代碼,演示如何使用CreateFile
函數(shù)創(chuàng)建一個(gè)名為test.txt
的新文件:
#include <windows.h>
#include <stdio.h>
int main() {
HANDLE hFile;
DWORD dwBytesWritten;
const char* fileName = "test.txt";
const char* fileContent = "Hello, World!";
// 創(chuàng)建文件
hFile = CreateFile(
fileName, // 文件名
GENERIC_WRITE, // 訪問(wèn)模式(只寫(xiě))
0, // 分享模式(無(wú)共享)
NULL, // 安全屬性(默認(rèn))
CREATE_ALWAYS, // 創(chuàng)建方式(總是創(chuàng)建新文件)
0, // 文件標(biāo)志和屬性(默認(rèn))
NULL // 模板文件句柄(無(wú)模板文件)
);
if (hFile == INVALID_HANDLE_VALUE) {
printf("Error creating file: %lu\n", GetLastError());
return 1;
}
// 寫(xiě)入文件內(nèi)容
if (!WriteFile(hFile, fileContent, strlen(fileContent), &dwBytesWritten, NULL)) {
printf("Error writing to file: %lu\n", GetLastError());
CloseHandle(hFile);
return 1;
}
// 關(guān)閉文件句柄
CloseHandle(hFile);
printf("File created successfully!\n");
return 0;
}
在這個(gè)示例中,我們使用CreateFile
函數(shù)創(chuàng)建一個(gè)名為test.txt
的新文件,并使用WriteFile
函數(shù)將字符串Hello, World!
寫(xiě)入文件中。最后,我們關(guān)閉文件句柄以釋放資源。