如何读取具有ReadFile函数的大文件

How to read a big file with ReadFile function

本文关键字:函数 ReadFile 文件 何读取 读取      更新时间:2023-10-16

我有一个大文件(500MB),我知道如何使用ReadFile函数读取此文件

,但我想阅读100MB的100MB

我的意思是我想在while循环中读取文件,在第一个循环中,我读取了第一个100MB文件,第二次阅读第二个100MB(从101到200),...

例如我有一个包含abdcefghijklmnopqrstuvwxyz的文件,现在我想首先阅读abcd,然后阅读efgh,然后阅读ijkl,然后读...

感谢您的帮助

据我了解,您想通过块读取文件?

简而言之是逻辑是:

get the size of the file or read till ReadFile return error
while (a chunk larger than zero could be read)
{
  write chunk to output
}

换句话说:最简单的方法是首先获得文件大小:

HANDLE hFile = CreateFile("c:\myFile", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); 
DWORD dwFileSize = GetFileSize(hFile, NULL); 

现在定义您的循环。读取最多1024个字节的块。当然,您可以使用较大的缓冲区。

BYTE buffer[1024];
while(read is less than remain ) {
  ReadFile(hFile, buffer, sizeof(buffer), &dwRead, NULL)
// append what you just read to some global buffer
}

在Google中搜索"块中读取文件",您会发现大量示例。