将字符串转换为 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:Stream
与 MemoryStream
不同。 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 转换为 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”