CreateFile
是Windows API(应用程序接口)中的一个函数,用于在Windows操作系统中创建、打开、关闭或删除文件。这个函数为程序员提供了对文件进行基本操作的接口。
CreateFile
函数的原型如下:
HANDLE CreateFile(
LPCTSTR FileName, // 文件名
DWORD DesiredAccess, // 访问模式
DWORD ShareMode, // 分享模式
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // 安全属性
DWORD CreationDisposition, // 创建方式
DWORD FlagsAndAttributes, // 文件标志和属性
HANDLE hTemplateFile // 模板文件句柄
);
参数说明:
FileName
:要创建或打开的文件的路径名。DesiredAccess
:指定访问文件的方式。例如,只读、只写或读写等。ShareMode
:指定文件共享的方式。例如,独占共享、共享读写等。lpSecurityAttributes
:指向一个安全属性结构体的指针,用于指定文件的安全设置。如果为NULL
,则文件具有默认的安全属性。CreationDisposition
:指定是创建新文件、打开现有文件还是其他操作。例如,CREATE_ALWAYS
表示总是创建新文件,如果文件已存在则覆盖它;OPEN_EXISTING
表示只打开已存在的文件,如果不存在则返回错误。FlagsAndAttributes
:指定文件的标志和属性。例如,FILE_ATTRIBUTE_NORMAL
表示文件具有正常属性,即没有特殊属性。hTemplateFile
:指定一个模板文件的句柄,用于指定文件的创建属性。如果为NULL
,则使用默认属性创建文件。CreateFile
函数返回一个HANDLE
类型的值,表示创建或打开的文件句柄。如果函数执行成功,则返回有效的文件句柄;否则返回INVALID_HANDLE_VALUE
。
下面是一个简单的示例代码,演示如何使用CreateFile
函数创建一个名为test.txt
的新文件:
#include <windows.h>
#include <stdio.h>
int main() {
HANDLE hFile;
DWORD dwBytesWritten;
const char* fileName = "test.txt";
const char* fileContent = "Hello, World!";
// 创建文件
hFile = CreateFile(
fileName, // 文件名
GENERIC_WRITE, // 访问模式(只写)
0, // 分享模式(无共享)
NULL, // 安全属性(默认)
CREATE_ALWAYS, // 创建方式(总是创建新文件)
0, // 文件标志和属性(默认)
NULL // 模板文件句柄(无模板文件)
);
if (hFile == INVALID_HANDLE_VALUE) {
printf("Error creating file: %lu\n", GetLastError());
return 1;
}
// 写入文件内容
if (!WriteFile(hFile, fileContent, strlen(fileContent), &dwBytesWritten, NULL)) {
printf("Error writing to file: %lu\n", GetLastError());
CloseHandle(hFile);
return 1;
}
// 关闭文件句柄
CloseHandle(hFile);
printf("File created successfully!\n");
return 0;
}
在这个示例中,我们使用CreateFile
函数创建一个名为test.txt
的新文件,并使用WriteFile
函数将字符串Hello, World!
写入文件中。最后,我们关闭文件句柄以释放资源。