2011-12-21 56 views

回答

1

首先 - 初審 - 你可能不想看小 - 一個幾千字節是更好的時候,從磁盤。在你的情況下 - 一個簡單的實現可以讀取16k - 然後遍歷這32個512字節的操作。

事實上,這並不重要 - 因爲操作系統很聰明,一般會再次猜測你 - 並且閱讀更多。因此,你只需做一個簡單的實施

do 
{ 
    bResult = ReadFile(hFile, &inBuffer, nBytesToRead, &nBytesRead, NULL); 
    do-something-with-nBytesRead; 
} while(!bResult && nBytesRead != 0); 
if (nBytesRead) error..; 

有點事情沒有問題。

如果你知道你總是會有這樣的(相當大的)文件,性能很重要,並且還有其他用途 - 然後考慮「內存映射」文件 - 即以這樣一種方式打開它整個文件出現在虛擬內存中。看看http://msdn.microsoft.com/en-us/library/windows/desktop/aa366556(v=vs.85).aspx

1

如果您閱讀大文件,通常需要關閉文件緩衝。因爲如果你不這樣做,你可以用這些大文件填充系統的文件緩存,即使你只讀取或寫入一次而不再使用它們。因此,訪問頻率更高的文件不再緩存,系統在特定時間內速度會變慢。

文章File Buffering描述瞭如何在不緩衝的情況下訪問文件。不幸的是,直接文件訪問並不像在Windows中那樣容易。

話雖如此,400兆字節通常不是一個問題。除非文件大於1 GB,否則我不會使用直接文件訪問。