如何将内存流转换为文本?

1 .net stream

我正在使用tcpstream并将数据复制到内存流中.现在我想将其转换为文本(UTF-8编码).我尝试了各种各样的方法,并做了flush(),但我无法弄明白.我尝试将它与StreamReader结合使用而没有运气(我得到一个空字符串).

Guf*_*ffa 16

只需从中获取数据MemoryStream并对其进行解码:

string decoded = Encoding.UTF8.GetString(theMemoryStream.ToArray());
Run Code Online (Sandbox Code Playgroud)

你可能会得到一个空字符串,因为你正在读取MemoryStream它而没有重置它的位置.ToArray无论当前位置在何处,该方法都会获得所有数据.

如果在将其放入之前恰好是字节数组MemoryStream,则可以直接使用它.


Yur*_*ich 6

using(MemoryStream ms = GetStream())
using(StreamReader reader = new StreamReader(ms))
{
    ms.Position = 0;
    Console.WriteLine(reader.ReadToEnd());
}
Run Code Online (Sandbox Code Playgroud)