我有一个大文件(500mb),我知道如何使用ReadFile函数读取此文件
但我想以100mb读取100mb
我的意思是我想在while循环中读取文件,在第一个循环中我读取第一个100mb的文件,第二次读取第二个100mb(从101到200),...
例如我有一个包含abdcefghijklmnopqrstuvwxyz
的文件,现在我想先阅读abcd
,然后阅读efgh
,然后阅读ijkl
等等...
感谢您的帮助
答案 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
}
在谷歌搜索"在块中读取文件"你会发现大量的例子。