我正在使用tcpstream并将数据复制到内存流中。现在我想将其转换为文本(UTF-8编码)。我尝试了各种各样的方法,并做了flush(),但我无法弄明白。我尝试将它与StreamReader结合使用而没有运气(我得到一个空字符串)。
答案 0 :(得分:16)
只需从MemoryStream
获取数据并对其进行解码:
string decoded = Encoding.UTF8.GetString(theMemoryStream.ToArray());
你可能会得到一个空字符串,因为你正在从MemoryStream
读取而没有重置它的位置。无论当前位置在何处,ToArray
方法都会获取所有数据。
如果在将其放入MemoryStream
之前恰好是字节数组,则可以直接使用它。
答案 1 :(得分:5)
using(MemoryStream ms = GetStream())
using(StreamReader reader = new StreamReader(ms))
{
ms.Position = 0;
Console.WriteLine(reader.ReadToEnd());
}