2014-10-21 3 views
0

Это не мой код. Я должен выяснить, что происходит. Строка оператора while - это то место, где я запутался. Все, что он пытается сказать, читается до конца файла. Я не понимаю, как он будет оценивать какое-то целое число для сравнения.Операторы BinaryReader и while

 using (FileStream fs = File.Open(pathToPK, FileMode.Open)) 
     { 
      BinaryReader br = new BinaryReader(fs); 

      using (MemoryStream ms = new MemoryStream()) 
      { 
       byte[] buffer = new byte[1024]; 

       int read = 0; 

       while ((read = br.Read(buffer, 0, 1024)) > 0) //don't understand this line 
       { 
        ms.Write(buffer, 0, read); 
       } 

       sk = new byte[ms.ToArray().Length]; //sk is a byte[] 

       ms.ToArray().CopyTo(sk, 0); 
      } 
     } 
+0

Подумайте, я не понимаю почти весь бит кода. –

+0

Вы читали документы метода BinaryReader.Read? – Steve

+0

мой ответ правильный .. –

ответ

2

В основном его открытие фильтра в FileMode.Open к указанному файлу (pathToPK). С помощью указанного файлаStream он открывает двоичный считыватель для чтения необработанных байтов и создает новый MemoryStream для копирования binaryContent.

Затем он переходит к чтению всего файла кусками в 1024 байта. Метод чтения BinaryReader возвращает количество прочитанных байтов, поэтому вы можете прочитать условие как «пока читатель прочитал не менее 1 байт (и попытался прочитать столько, сколько 1024)».

В конце концов, это создаст новые байты [] на длину всего файла, на основе потока памяти, в которую он был скопирован и фактически скопировать все содержимое в ск

+0

Да, я чувствую себя действительно глупым, потому что по какой-то причине я читал больше, чем знак, чем меньше –

1

Он делает sk = File.ReadAllBytes(pathToPK); в очень сложный путь.

+0

Вы говорите, что я мог бы по существу заменить этот бит кода вашим. –

+0

Возможно, мне что-то не хватает, но это то, на что мне кажется. Вы можете протестировать его, выполнив 'sk1.SequenceEqual (sk2);' (true, если они такие же) и заполнить 'sk1' старый способ и' sk2' таким образом. – Magnus

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