下面我将详细介绍几个常用的文件操作相关函数的用法。
1. CreateFile
功能:用于创建或打开一个文件、文件夹、通信资源、磁盘分区等。
原型:
c
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)。
lpSecurityAttributes:指向 SECURITY_ATTRIBUTES 结构的指针,可以为 NULL。
dwCreationDisposition:控制如何创建或打开文件,如 CREATE_NEW, CREATE_ALWAYS, OPEN_EXISTING, OPEN_ALWAYS, TRUNCATE_EXISTING。
dwFlagsAndAttributes:文件或设备的属性,如 FILE_ATTRIBUTE_NORMAL。
hTemplateFile:用于复制文件属性的模板文件的句柄,通常设置为 NULL。
返回值:如果函数成功,返回值是新创建或打开的文件的句柄。如果函数失败,返回值是 INVALID_HANDLE_VALUE。
2. WriteFile
功能:用于将数据写入文件或 I/O 设备。
原型:
c
BOOL WriteFile(
HANDLE hFile,
LPCVOID lpBuffer,
DWORD nNumberOfBytesToWrite,
LPDWORD lpNumberOfBytesWritten,
LPOVERLAPPED lpOverlapped
);
参数说明:
hFile:通过 CreateFile() 打开的文件或设备的句柄。
lpBuffer:指向包含要写入文件的数据的缓冲区的指针。
nNumberOfBytesToWrite:要写入的字节数。
lpNumberOfBytesWritten:实际写入的字节数的指针,该参数可以为 NULL。
lpOverlapped:指向 OVERLAPPED 结构的指针,用于异步操作,对于同步操作,此参数应为 NULL。
返回值:如果函数成功,返回值为非零(TRUE)。如果函数失败,返回值为零(FALSE)。
3. ReadFile
虽然直接问题是关于文件操作相关的函数,但ReadFile也是文件操作中常用的函数,用于从文件或输入/输出设备读取数据。
原型:
c
BOOL ReadFile(
HANDLE hFile,
LPVOID lpBuffer,
DWORD nNumberOfBytesToRead,
LPDWORD lpNumberOfBytesRead,
LPOVERLAPPED lpOverlapped
);
参数说明:
hFile:通过 CreateFile() 打开的文件或设备的句柄。
lpBuffer:指向用于接收数据的缓冲区的指针。
nNumberOfBytesToRead:要读取的字节数。
lpNumberOfBytesRead:实际读取的字节数的指针。
lpOverlapped:指向 OVERLAPPED 结构的指针,用于异步操作,对于同步操作,此参数应为 NULL。
返回值:如果函数成功,返回值为非零(TRUE)。如果函数失败,返回值为零(FALSE)。
4. CloseHandle
功能:用于关闭一个内核对象,包括文件、文件映射、进程、线程、安全和同步对象等。
原型:
c
BOOL CloseHandle(
HANDLE hObject
);
参数说明:
hObject:要关闭的对象的句柄。
返回值:如果函数成功,返回值是非零值。如果函数失败,返回值是零。要获取扩展错误信息,可以调用 GetLastError 函数。
这些函数是Windows API中文件操作的基础,通过这些函数,开发者可以在Windows平台上实现文件的创建、读写、关闭等操作。在实际编程中,还需要结合错误处理、文件属性设置等函数来完成更复杂的文件操作任务。