CreateFile:获得一个已存在文件句柄或者新建文件句柄
HANDLE CreateFileW(
LPCWSTR lpFileName,//文件路径
DWORD dwDesiredAccess,//文件的访问控制,读GENERIC_READ、写GENERIC_WRITE,读写(GENERIC_READ | GENERIC_WRITE)
DWORD dwShareMode,//零表示不共享,FILE_SHARE_READ、/、FILE_SHARE_WRITE对文件进行共享访问
LPSECURITY_ATTRIBUTES lpSecurityAttributes,//安全描述符
DWORD dwCreationDisposition,//文件不存在或存在时的操作
DWORD dwFlagsAndAttributes,//设置文件标志位
HANDLE hTemplateFile//大多数情况为NULL
);
dwCreationDisposition:指定当文件存在或不存在时的操作。常见的操作有5种:
CREATE_NEW:创建文件,如果文件存在会出错;
CREATE_ALWAYS:创建文件,会修改前一个文件;
OPEN_EXISTING:文件已经存在;
OPEN_ALWAYS:如果不存在就创建;
TRUNCATE_EXISTING:将现有的文件缩短为零长度;
dwFlagAndAttributes:表示新创建文件的属性。文件的常见属性有5种:
FILE_ATTRIBUTE_ARCHIVE:标记为归档属性;
FILE_ATTRIBUTE_NORMAL:默认属性;
FILE_ATTRIBUTE_HIDDEN:隐藏文件或目录;
FILE_ATTRIBUTE_READONLY:文件为只读;
FILE_ATTRIBUTE_SYSTEM:文件为系统文件;
WriteFile:写文件
BOOL WriteFile(
HANDLE hFile,//文件句柄
LPCVOID lpBuffer,//要写入的数据缓存区
DWORD nNumberOfBytesToWrite,//要写入的字节数
LPDWORD lpNumberOfBytesWritten,//设置一个遍历,用来接收写入的内容
LPOVERLAPPED lpOverlapped//大多数情况为NULL
);
ReadFile:读文件 与写文件类似
BOOL ReadFile(
HANDLE hFile,
LPVOID lpBuffer,
DWORD nNumberOfBytesToRead,
LPDWORD lpNumberOfBytesRead,
LPOVERLAPPED lpOverlapped
);
#include<windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
//文件句柄
HANDLE hFile; //用来接收CreateFile返回来的句柄,用这个句柄来进行写入的操作
DWORD dwWritten;
TCHAR szSystemDir[MAX_PATH]; //字符数组,用于存储系统目录
GetSystemDirectory(szSystemDir, MAX_PATH);//获取系统目录
hFile = CreateFile("test.txt",
GENERIC_WRITE,
0,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);//创建文件txt
if (hFile != INVALID_HANDLE_VALUE)
{
if (!WriteFile(hFile, szSystemDir, lstrlen(szSystemDir), &dwWritten, NULL))//将系统目录,系统信息写入文件中
{
return GetLastError(); //写入失败 返回错误信息
}
}
CloseHandle(hFile);//关闭文件
return 0;
}