将StreamReader转换为byte []

usr*_*986 36 c# stream

我正在获取结果streamreader对象.

我想将结果转换为byte [].

如何将streamreader转换为byte []?

谢谢

Jef*_*ado 43

只需将您读取的所有内容放入a中MemoryStream,最后获取字节数组.如上所述,您应该从底层流中读取以获取原始字节.

var bytes = default(byte[]);
using (var memstream = new MemoryStream())
{
    var buffer = new byte[512];
    var bytesRead = default(int);
    while ((bytesRead = reader.BaseStream.Read(buffer, 0, buffer.Length)) > 0)
        memstream.Write(buffer, 0, bytesRead);
    bytes = memstream.ToArray();
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您不想管理缓冲区:

var bytes = default(byte[]);
using (var memstream = new MemoryStream())
{
    reader.BaseStream.CopyTo(memstream);
    bytes = memstream.ToArray();
}
Run Code Online (Sandbox Code Playgroud)

  • @Matti:这只是我选择的编码风格,我随时都会接受`var`关键字(对于大多数局部变量).我不希望每个人都对此感到满意,但我对此感到满意. (2认同)

Mat*_*nen 34

StreamReader用于文本,而不是普通字节.不要使用StreamReader,而是直接从底层流中读取.