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;
}

文件内容:

在这里插入图片描述

运行结果:

在这里插入图片描述

结语:由于编码问题,有些字符(包括一些空格等)不能正常显示,需要修改文件的编码格式。如有更好的方法望各位指点明津!谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随心漂流

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值