【问题标题】:How do i convert a memorystream to text?如何将内存流转换为文本?
【发布时间】:2010-07-22 02:07:15
【问题描述】:

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

【问题讨论】:

    标签: .net stream


    【解决方案1】:

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

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

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

    如果在你放入MemoryStream之前恰好是一个字节数组,你可以直接使用它。

    【讨论】:

      【解决方案2】:
      using(MemoryStream ms = GetStream())
      using(StreamReader reader = new StreamReader(ms))
      {
          ms.Position = 0;
          Console.WriteLine(reader.ReadToEnd());
      }
      

      【讨论】:

      • 空字符串。 Guffa 解决了它。我不得不从一开始就寻求ms。我最终使用了他的 Array 解决方案。
      • @acidzombie 仍然不确定您的意思,将位置设置为 0 与寻找开头相同(据我所知)。
      • 是的,正确的。但我不是在寻找,也不知道我应该找哪个是问题所在。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-17
      • 2011-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多