猿问

您如何从MemoryStream获取字符串?

如果给我一个MemoryStream我知道已填充的String,我该如何String退出?



子衿沉夜
浏览 570回答 3
3回答

繁星淼淼

此示例说明如何向MemoryStream读取和写入字符串。Imports System.IOModule 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 SubEnd Module

largeQ

您也可以使用Encoding.ASCII.GetString(ms.ToArray());我认为这样做效率不高,但我不能对此宣誓。它还允许您选择其他编码,而使用StreamReader则必须将其指定为参数。

繁花不似锦

使用StreamReader将MemoryStream转换为字符串。<Extension()> _Public Function ReadAll(ByVal memStream As MemoryStream) As String&nbsp; &nbsp; ' Reset the stream otherwise you will just get an empty string.&nbsp; &nbsp; ' Remember the position so we can restore it later.&nbsp; &nbsp; Dim pos = memStream.Position&nbsp; &nbsp; memStream.Position = 0&nbsp; &nbsp; Dim reader As New StreamReader(memStream)&nbsp; &nbsp; Dim str = reader.ReadToEnd()&nbsp; &nbsp; ' Reset the position so that subsequent writes are correct.&nbsp; &nbsp; memStream.Position = pos&nbsp; &nbsp; Return strEnd Function
随时随地看视频慕课网APP
我要回答