2015-12-07 4 views
1

Так что я пишу программу, которая получит настройки из двоичного файла в vb.net. Я читаю по 25 байт за раз. Однако, когда я получаю свой байтовый массив, ему не хватает первого байта и только первый байт.Почему binaryreader удаляет первый байт моего файла?

 Dim bytes(24) As Byte 
     Using fs As BinaryReader = New BinaryReader(File.Open(folder.SelectedPath & "\*********", FileMode.Open, FileAccess.Read)) 
      While fs.Read() > 0 
       fs.Read(bytes, 0, bytes.Length) 
      End While 
      fs.Close() 
     End Using 

В результате получившегося массива будет отсутствовать только первый байт, который в моем случае равен 0x40. Почему это происходит и что мне делать, чтобы этого избежать?

ответ

3

Это происходит потому, что fs.Read в While fs.Read() > 0 читает что-то из потока, и, таким образом, поток уже не в положении 0.

Вот как вы должны это сделать:

Dim bytes(24) As Byte 
Using fs As BinaryReader = New BinaryReader(File.Open(folder.SelectedPath & "\*********", FileMode.Open, FileAccess.Read)) 

    Dim total_read As Integer 

    While total_read < bytes.Length 
     Dim read = fs.Read(bytes, total_read, bytes.Length - total_read) 
     If read = 0 Then 
      Exit While 
     End If 

     total_read += read 
    End While 
End Using 
+0

Большое спасибо ! Именно то, что мне нужно! @Yacoub – Hans

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