如何使用ReadFile函数读取大文件

时间:2016-11-30 15:52:18

标签: c++ api readfile

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

但我想以100mb读取100mb

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

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

感谢您的帮助

1 个答案:

答案 0 :(得分:-2)

据我所知,你想要通过chunk读取文件块?

简而言之,逻辑是:

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
}

在谷歌搜索"在块中读取文件"你会发现大量的例子。