为了账号安全,请及时绑定邮箱和手机立即绑定

您如何从MemoryStream获取字符串?

您如何从MemoryStream获取字符串?

子衿沉夜 2019-11-22 15:48:46
如果给我一个MemoryStream我知道已填充的String,我该如何String退出?
查看完整描述

3 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

此示例说明如何向MemoryStream读取和写入字符串。


Imports System.IO


Module Module1

  Sub Main()

    ' We don't need to dispose any of the MemoryStream 

    ' because it is a managed object. However, just for 

    ' good practice, we'll close the MemoryStream.

    Using ms As New MemoryStream

      Dim sw As New StreamWriter(ms)

      sw.WriteLine("Hello World")

      ' The string is currently stored in the 

      ' StreamWriters buffer. Flushing the stream will 

      ' force the string into the MemoryStream.

      sw.Flush()

      ' If we dispose the StreamWriter now, it will close 

      ' the BaseStream (which is our MemoryStream) which 

      ' will prevent us from reading from our MemoryStream

      'sw.Dispose()


      ' The StreamReader will read from the current 

      ' position of the MemoryStream which is currently 

      ' set at the end of the string we just wrote to it. 

      ' We need to set the position to 0 in order to read 

      ' from the beginning.

      ms.Position = 0

      Dim sr As New StreamReader(ms)

      Dim myStr = sr.ReadToEnd()

      Console.WriteLine(myStr)


      ' We can dispose our StreamWriter and StreamReader 

      ' now, though this isn't necessary (they don't hold 

      ' any resources open on their own).

      sw.Dispose()

      sr.Dispose()

    End Using


    Console.WriteLine("Press any key to continue.")

    Console.ReadKey()

  End Sub

End Module


查看完整回答
反对 回复 2019-11-22
?
largeQ

TA贡献2039条经验 获得超7个赞

您也可以使用


Encoding.ASCII.GetString(ms.ToArray());

我认为这样做效率不高,但我不能对此宣誓。它还允许您选择其他编码,而使用StreamReader则必须将其指定为参数。


查看完整回答
反对 回复 2019-11-22
?
繁花不似锦

TA贡献1851条经验 获得超4个赞

使用StreamReader将MemoryStream转换为字符串。


<Extension()> _

Public Function ReadAll(ByVal memStream As MemoryStream) As String

    ' Reset the stream otherwise you will just get an empty string.

    ' Remember the position so we can restore it later.

    Dim pos = memStream.Position

    memStream.Position = 0


    Dim reader As New StreamReader(memStream)

    Dim str = reader.ReadToEnd()


    ' Reset the position so that subsequent writes are correct.

    memStream.Position = pos


    Return str

End Function


查看完整回答
反对 回复 2019-11-22
  • 3 回答
  • 0 关注
  • 501 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信