我有一個大的文件(500MB),我知道如何讀與ReadFile函數如何閱讀與ReadFile函數大文件
這個文件,但我想100MB
讀取100MB我的意思是我想要在while循環中讀取文件,在第一個循環中讀取第一個100mb文件,第二次讀取第二個100mb(從101到200),...
例如我有一個文件包含abdcefghijklmnopqrstuvwxyz
現在我想先看abcd
,然後看efgh
,th恩ijkl
等等...
感謝您的幫助
我有一個大的文件(500MB),我知道如何讀與ReadFile函數如何閱讀與ReadFile函數大文件
這個文件,但我想100MB
讀取100MB我的意思是我想要在while循環中讀取文件,在第一個循環中讀取第一個100mb文件,第二次讀取第二個100mb(從101到200),...
例如我有一個文件包含abdcefghijklmnopqrstuvwxyz
現在我想先看abcd
,然後看efgh
,th恩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
}
在谷歌搜索「以塊形式讀取文件」,你會發現大量的例子。
500毫克不是*那*大... –
@FrédéricHamidi:你在開玩笑嗎? 500毫克的字節就像yottabytes! – AndyG
@AndyG,你在考慮新技術。基於老派拼盤的硬盤的字節數爲500毫克,出乎意料的低:) –