将字符串转换为 System.IO.Stream [重复]

Posted

技术标签:

【中文标题】将字符串转换为 System.IO.Stream [重复]【英文标题】:Convert String to System.IO.Stream [duplicate] 【发布时间】:2011-12-24 05:27:14 【问题描述】:

我需要将 String 转换为 System.IO.Stream 类型以传递给另一个方法。

我试过这个没有成功。

Stream stream = new StringReader(contents);

【问题讨论】:

我不知道 MemoryStream 在 Stream 中是一样的。 【参考方案1】:

试试这个:

// convert string to stream
byte[] byteArray = Encoding.UTF8.GetBytes(contents);
//byte[] byteArray = Encoding.ASCII.GetBytes(contents);
MemoryStream stream = new MemoryStream(byteArray);

// convert stream to string
StreamReader reader = new StreamReader(stream);
string text = reader.ReadToEnd();

【讨论】:

谢谢。我不知道 MemoryStream 与 Stream 相同。 @xbonez:StreamMemoryStream 不同。 MemoryStream 继承自 Stream,就像 FileStream 一样。所以你可以将它们转换为Stream... 请注意:Streams 实现了 IDisposable,因此您需要在它们周围使用 using 包装器以确保安全。【参考方案2】:

要将字符串转换为流,您需要决定流中的字节应该使用哪种编码来表示该字符串 - 例如,您可以:

MemoryStream mStrm= new MemoryStream( Encoding.UTF8.GetBytes( contents ) );

MSDN 参考资料:

http://msdn.microsoft.com/en-us/library/ds4kkd55%28v=VS.100%29.aspx http://msdn.microsoft.com/en-us/library/e55f3s5k.aspx

【讨论】:

【参考方案3】:
System.IO.MemoryStream mStream = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes( contents));

【讨论】:

【参考方案4】:
string str = "asasdkopaksdpoadks";
byte[] data = Encoding.ASCII.GetBytes(str);
MemoryStream stm = new MemoryStream(data, 0, data.Length);

【讨论】:

使用 ASCII 编码让熊猫难过... :(【参考方案5】:

这是旧的,但需要帮助:

你也可以使用 stringReader 流

string str = "asasdkopaksdpoadks";
StringReader TheStream = new StringReader( str );

【讨论】:

StringReader 不是流。 从 System.IO.Stream 派生的内置类在此处列出:msdn.microsoft.com/en-us/library/… @zetoff,被 StreamReader 弄糊涂了?

以上是关于将字符串转换为 System.IO.Stream [重复]的主要内容,如果未能解决你的问题,请参考以下文章

将字符串转换为 System.IO.Stream [重复]

将 System.IO.Stream 转换为 Byte[] [重复]

c# 将 system.IO.Stream 转换为 Byte[] [重复]

如何将 IStream(C++) 转换为 System::IO::Stream(c#),反之亦然

如何在 System.IO.Stream 中转换 System.Byte[]?

无法将“Microsoft.Asp.NetCore.Http.FormFile”类型的对象转换为在 Asp.NetCore MVC Web 应用程序中键入“System.IO.Stream”