读入 VB.NET 时从文件中排除前 'x' 字节的二进制数据

Exclude first 'x' bytes of binary data from a file while reading in VB.NET

我是一个处理二进制文件的菜鸟。它是这个问题的扩展:Reading 'x' bytes of data

我的二进制文件大小 1025 KB,即 1049600 字节,其中包含 1024 字节 的 header 条信息。我只想读取 1023th 位之后的剩余数据,等于 1048576 字节 .

如何排除前 1024 个字节

我正在使用相同的代码,但我无法让它工作,我的代码有什么问题吗?

Dim arraySizeMinusOne = 5
Dim buffer() As Byte = New Byte(arraySizeMinusOne) {}
Using fs As New FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.None)
    fs.Read(buffer, 0, buffer.Length)
    Dim _arraySizeMinusOne = 1048575
    Dim _buffer() As Byte = New Byte(_arraySizeMinusOne) {}
    'Process 1048576 bytes of data here
End Using

创建一个 byte 数组,其长度为整个文件的长度减去您排除的大小并减去 1。最后一个 1 是因为 vb 数组与 c# 数组不同。在 vb:

Dim buff() As Byte = New Byte(10) {}

创建一个 11 大小的数组并在 c# 中:

byte[] buff = new byte[10];

创建 10 码!

Using fs As New FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.None)
    Dim buff() As Byte = New Byte(CInt(fs.Length - 1024 - 1)) {}
    Dim buffTotal() As Byte = New Byte(CInt(fs.Length - 1)) {}
    'read all file
    fs.Read(buffTotal, 0, buffTotal.Length)
    If fs.Length > 1024 Then
        'move from 1024 byte to the end to buff array
        Buffer.BlockCopy(buffTotal, 1024, buff, 0, buffTotal.Length - 1024)
    End If
End Using

buffer 不是一个好名字,因为 vb 中已经存在 class Buffer!将其更改为其他内容,例如 buff.