如何在c#中将BinaryReader转换为流

本文关键字:转换 BinaryReader 中将 | 更新日期: 2023-09-27 18:11:26

我必须完全读取".bin"文件并将流传递给函数。我用BinaryReader试过了,它可以逐个字节地读取值,我想把整个文件作为字符串流传递给我的函数。使用StreamReader会给出垃圾信息,看起来StreamReader不能正确读取bin文件。

如何在c#中将BinaryReader转换为流

不要将二进制数据作为string传递。相反,使用byte[],它与您可能从中读取它的任何Stream分离。StreamReader用于读取文本是正确的,因此您需要直接使用BinaryReader或仅使用Stream.Read()方法。如果你正在读取的流允许查找(通过CanSeek属性公开),你可以发现它的Length并一次从流中读取所有字节。

但是,如果流非常大或不支持查找,则在读取时需要更精细一点,通过分块读取,直到Read()方法返回0(这意味着已到达流的末尾)。

没有等价的StreamReader.ReadToEnd()来读取二进制数据,但是定义一个作为扩展方法并不难。