⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 12.4.3 文件的读取.txt

📁 网上第一本以TXT格式的VC++深入详解孙鑫的书.全文全以TXT格式,并每一章节都分了目录,清晰易读
💻 TXT
字号:
12.4.3 文件的读取 
ReadFile函数可以从文件读取数据,该函数的声明形式如下所示。 
BOOL ReadFile( 
HANDLE hFile , 
LPvorD lpBuffer, 
DWORD nNumberOfBytesToRead, 
LPDWORD lpNumberOfBytesRead, 
LPOVERLAPPED lpOverlapped 

ReadFile函数各个参数与WriteFile函数相应参数的含义类似,分别如下所述: 
. hFile 
指定要读取其数据的文件的句柄。 
. lpBuffer 
指向一个缓冲区的指针,该缓冲区将接收从文件中读取的数据。 
. nNumberOfBytesToRead 
指定从文件读取的字节数。 
. lpNumberOfBytesRead 
用来接收实际读到的字节数。 
. lpOverlapped 
指向OVERLAPPED结构体的指针。读者应注意,与上面的WriteFile函数相同,这个参数如果想起作用
的话,那么在利用 CreateFile打开文件设置文件属性时需要添加 FILE_FLAG_OVERLAPPED标记。
下面,我们在File程序中利用 CreateFile函数打开上面创建的文件: 5.txt,然后利用 ReadFile
函数读取其中的数据。首先将CFileView类的OnFileRead函数中已有代码注释起来,然后添加如例 
12-17所示的代码。 
例12-17 

void CFileView: :OnFileRead() { 
HANDLE hFile; 
1/打开文件
hFile=CreateFile("5.txt" , GENERIC_READ, 0, NULL , OPEN_EXISTING , FILE_ATTRIBUTE_NORMAL , 
NULL); 
11接收实际读取到的数据 
char ch[1001] ; 
11接收实际读取到的字节数 
DWORD 	dwReads; 
11读取数据 
ReadFile(hFile , ch, 100 , &dwReads , NULL) ; 
11设置字符串结束字符 
ch[dwReadsl=0; 
. 

第 12
//关闭打开的文件对象的句柄 
CloseHandle(hFile) ; 
//显示读取到的数据 
MessageBox (ch) ; 
在上述例 12-17所示的代码中,首先使用 CreateFile打开现有文件: 5.txt,因为现在要从文件中
读取数据,所以访问方式设置为: GENERIC_READ;共享方式参数设置为 0,表明该对象不能被共享:
第四个参数设置为 NULL,让我们创建的这个文件对象使用默认的安全属性;第五个参数,即文件的
创建方式设置为 OPEN_EXISTING,即打开一个己有文件;第六个参数,即文件属性设置为 
FILE_ATTRIBUTE_NORMAL;最后一个参数,即模板文件的句柄设置为 NULL。
接下来,调用 ReadFile函数从文件中读取数据。该函数的第一个参数设置为 CreateFile函数返回
的文件句柄:第二个参数就是用来接收从文件中读取的数据的缓冲区: ch;第三个参数指定读取的字
节数: 100;第四个参数接收实际读到的字节数,将该字节数保存到 dwReads变量中;最后一个参数指
向 OVERLAPPED结构体的指针,这里设置为 NULL。读者一定要记住,如果想让最后一个参数起作用
的话,则在打开文件时一定要设置 FEE-FLAG-OVERLAPPED标记。
读取操作完成之后,读到的数据就保存到了字符数组 ch中,接下来将该字符数组中保存的己读取到
的数据的下一个元素设置为 0,作为所读取字符串的结尾。读者可以运行 File程序,单击【文件操
作\读取文件】菜单项,从程序弹出的消息框中,将可以看到读取的数据是正确的。 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -