我對將文件逐步讀入緩衝區的步驟有點困惑。需要幫助理解Stream.Read()
從MSDN文檔
public abstract int Read(
byte[] buffer,
int offset,
int count
)
FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
try
{
int length = (int)fileStream.Length; // get file length
buffer = new byte[length]; // create buffer
int count; // actual number of bytes read
int sum = 0; // total number of bytes read
// read until Read method returns 0 (end of the stream has been reached)
while ((count = fileStream.Read(buffer, sum, length - sum)) > 0)
sum += count; // sum is a buffer offset for next reading
源I可以說,線fileStream.Read(buffer, sum, length - sum)
爲「讀fileStream
從sum
(偏移)到length - sum
(總字節讀取讀入)到buffer
「。 OK,所以在開始時,sum
= 0時,我將在1短時間內有效地將整個fileStream讀入緩衝區,但我認爲情況並非如此。也許Read()
讀取任何它可能會進入緩衝區?然後返回,以便你可以Read()
它呢?我有點困惑。
嗯,那麼'fileStream.Length'會被設置爲實際的總長度嗎?不只是有什麼可用的? – 2010-10-19 08:59:47
@jiewmeng:那麼,'fileStream.Length'將是您讀取該長度時文件的長度。該文件可能會改變之間的時間和你讀數據的時間。 – 2010-10-19 09:06:56
那麼我猜它只會增加?我還想知道緩衝區是如何逐步讀取文件的,以便應用程序不會使用太多內存?我懷疑這是...只是檢查 – 2010-10-19 09:21:35