2014-01-06 2 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 Mono.

+1

Переменная bytesRead должна оставаться на нуле, я думаю. Это смещение в буфер, а не файл. –

ответ

3

Stream.Read - второй параметр смещен в буфере и должен быть 0 в вашем случае.

0

Прочитать параметры для информации о буфере, вы сохраняете данные в буфере от смещения до смещения + nLength Для продвижения в вашем файле stream.Position = bytesRead;

Смежные вопросы