在VB.NET中只从文件中读取x个字节

时间:2013-09-25 19:32:40

标签: vb.net hex byte

我使用此代码读取文件的完整十六进制:

Dim bytes As Byte() = IO.File.ReadAllBytes(OpenFileDialog1.FileName)
Dim hex As String() = Array.ConvertAll(bytes, Function(b) b.ToString("X2"))

我是否只能读取前X个字节数并将其转换为十六进制?

谢谢,

1 个答案:

答案 0 :(得分:3)

有很多方法可以从.NET中的文件中获取字节。一种方法是:

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)
End Using

arraySizeMinusOne是数组的最大索引 - 因此设置为5表示您将获得6个字节(索引0到5)。

这是一种通过大文件读取的流行方式,一次只读取一个块。通常你会将缓冲区设置为合理的大小,如1024或4096,然后读取那么多字节,用它们做一些事情(比如写入不同的流),然后继续下一个字节。它类似于处理文本文件时对StreamReader所做的操作。