2011-11-08 101 views
108

StringをSystem.IO.Stream型に変換して別のメソッドに渡す必要があります。StringをSystem.IO.Streamに変換する

これは失敗しました。

Stream stream = new StringReader(contents); 
+0

-1「うまくいかない」とは? [System.IO](http://msdn.microsoft.com/en-us/library/29kt2zfk.aspx)名前空間を熟読することを検討してください...非常に便利な "メモリ内"ストリームクラスがあります。 –

+2

私はStreamでMemoryStreamが同じであることに気づいていませんでした。 – xbonez

答えて

235

この試してみてください:あなたは、ストリーム内のバイトを符号化すると、その文字列を表現するために持つべきかを決定する必要がストリームに文字列を変換するには

// 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(); 
+0

ありがとうございます。私はMemoryStreamがStreamと同じであることを知らなかった。 – xbonez

+3

@xbonez: 'Stream'は' MemoryStream'と同じではありません。 'MemoryStream'は' FileStream'と同様に 'Stream'を継承します。だからあなたはそれらを 'Stream'としてキャストすることができます。 – Marco

+7

ちょうど注記:ストリームはIDisposableを実装していますので、それらの周りに安全なラッパーを使用する必要があります。 –

5
System.IO.MemoryStream mStream = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(contents)); 
0
string str = "asasdkopaksdpoadks"; 
byte[] data = Encoding.ASCII.GetBytes(str); 
MemoryStream stm = new MemoryStream(data, 0, data.Length); 
+2

ASCIIコードを使用すると、panda sad ... :( – jebar8

-5

これは古いですが、助けのため:

あなたはまたにStringReaderストリームを使用することができます

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

'StringReader'はストリームではありません –

+0

System.IO.Streamから派生したクラスがここにリストされています: https://msdn.microsoft.com/ja -us/library/system.io.stream(v = vs.110).aspx – DVK

+0

@zetoff、StreamReaderが混乱していますか? – juagicre

関連する問題