WindowsAPI--CreateFile、ReadFile
HANDLE CreateFile(
LPCTSTR,lpFileName, //指向文件名的指针
DWORD dwDesiredAccess, //访问模式(读/写)
DWORD dwShareMode, //共享模式
LPSECURITY_ATTRIBUTES lpSecurityAttributes,//指向安全属性的指针
DWORD dwCreationDisposition, //如何让创建
DWORD dwFlagAndAttributes, //文件属性
HANDLE hTemplateFile //用于复制文件句柄
);
BOOL ReadFile(
HANDLE fFile, //文件句柄
LPCVOID lpBuffer, //数据缓存区指针
DWORD nNumberOfBytesToRead, //所要写的字节数
LPDWORD lpNumberOfBytesRead, //用于保存实际写入字节数的存储区的指针
LPOVERLAPPED lpOverlapped //OVERLAPPED结构体指针
)
BOOL WriteFile(
HANDLE fFile, //文件句柄
LPCVOID lpBuffer, //数据缓存区指针
DWORD nNumberOfBytesToWrite, //所要写的字节数
LPDWORD lpNumberOfBytesWritten,//用于保存实际写入字节数的存储区的指针
LPOVERLAPPED lpOverlapped //OVERLAPPED结构体指针
)
案例:读取已经存在文件的内容
win32:
//功能:读取已经存在文件的内容
#include<Windows.h>
#include<stdio.h>
#define BUF_SIZE 256 //存放将要读到的缓存大小
int main()
{
HANDLE hFileRead;//文件句柄
DWORD nIn;//实际读多少
CHAR buffer[BUF_SIZE];//字符数组:存放读到的内容
//1.打开已经存在的文件
//CreateFile():打开文件,存在则打开,不存在则创建
hFileRead = CreateFile(
"Life.txt",//文件名
GENERIC_READ,//读文件
FILE_SHARE_READ,//共享读
NULL,//默认安全属性
OPEN_EXISTING,//打开已经存在的文件
FILE_ATTRIBUTE_NORMAL, //设定文件属性
NULL //指定模板
);
if (hFileRead == INVALID_HANDLE_VALUE)//无效句柄,文件打开失败
{
printf("Cannot open file.Error:%x\n",GetLastError());//通过GetLastError()获取错误信息
system("pause");
return -1;
}
//2.文件打开成功,读取内容
while (ReadFile(hFileRead,//文件句柄
buffer, //读多少个
BUF_SIZE,//最多能读多少个
&nIn, //实际读到多少个
NULL) && nIn>0) //nIn>0说明还没读完,继续读,直到nIn<=0读完为止
{
printf("%s\n", buffer); //打印出读到的文件内容
}
//3.读完后关闭文件句柄
CloseHandle(hFileRead);
system("pause");
return 0;
}