所以我正在编写一个程序,它将从vb.net中的二进制文件接收设置。我一次读取25个字节。但是当我检索我的字节数组时,它缺少第一个字节,只有第一个字节。
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。为什么会发生这种情况,我该怎么做才能避免这种情况?
答案 0 :(得分: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