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

时间:2010-07-22 02:07:16

标签: .net stream

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

2 个答案:

答案 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());
}
相关问题