如何将MemoryStream转换为文本?

5

我正在使用TcpStream,并将数据复制到MemoryStream中。现在我想将其转换为文本(UTF-8编码)。我尝试了各种方法并进行了flush()操作,但无法解决问题。我尝试与StreamReader结合使用,但没有成功(我得到一个空字符串)。

2个回答

22

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

string decoded = Encoding.UTF8.GetString(theMemoryStream.ToArray());

你可能会得到一个空字符串,因为你从MemoryStream中读取时没有重置它的位置。无论当前位置在哪里,ToArray方法都会获取所有数据。

如果在将其放入MemoryStream之前它已经是一个字节数组,那么你可以直接使用它。


11
using(MemoryStream ms = GetStream())
using(StreamReader reader = new StreamReader(ms))
{
    ms.Position = 0;
    Console.WriteLine(reader.ReadToEnd());
}

空字符串。Guffa解决了它。我不得不将ms寻找到开头。最终我使用了他的数组解决方案。 - user34537
@acidzombie,我仍然不确定你的意思,将位置设置为0与寻找开头是一样的(就我所读的而言)。 - Yuriy Faktorovich
是的,正确。但我并没有寻找,也不知道我应该寻找,这就是问题所在。 - user34537

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接