2014-01-06 110 views
0

我不知道我在這裏做錯了什麼。我的代碼在第一次通過時按預期工作,但在第二次通過時它不會運行,並拋出一個異常,它只是說「閱讀將超出緩衝區%」閱讀會超出緩衝區錯誤

我收集我在做一些錯誤的緩衝區,它不像我一樣覆蓋它?

我基本上是有相同的代碼,改變以匹配MSDN的例子,但沒有喜悅..

using (Stream stream = new FileStream(path, FileMode.Open, FileAccess.Read)) 
{ 
    byte[] buffer = new byte[1024]; 

    int bytesRead = 0; 
    long bytesToRead = stream.Length; 

    while (bytesToRead > 0) 
    {    
     int n = stream.Read (buffer, bytesRead, 1024); 
     if (n == 0) break; 

     //do work on buffer... 

     bytesRead += n; 
     bytesToRead -= n; 
    } 
} 

.NET 2.0中單工作。

+1

bytesRead變量應該保持爲零,我想。它是緩衝區的偏移量 - 不是文件。 –

回答

3

Stream.Read - 第二個參數是在緩衝區中偏移,在您的情況下應該爲0。

0

讀取參數用於緩衝區信息,您將數據存儲在緩衝區中,從偏移量到偏移量+ nLength 在文件集中前進 stream.Position = bytesRead;