2011-11-08 3 views
108

J'ai besoin de convertir une chaîne en type System.IO.Stream pour passer à une autre méthode.Convertir une chaîne en System.IO.Stream

J'ai essayé ceci sans succès.

Stream stream = new StringReader(contents); 
+0

-1 Eh bien, "qu'est-ce qui n'a pas fonctionné"? Pensez à lire l'espace de noms [System.IO] (http://msdn.microsoft.com/en-us/library/29kt2zfk.aspx) ... il existe une classe de flux "in memory" très utile. –

+2

Je n'étais pas au courant que MemoryStream était le même chez Stream. – xbonez

Répondre

235

Essayez ceci:

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

et

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

Merci. Je n'étais pas au courant MemoryStream était le même que Stream. – xbonez

+3

@xbonez: 'Stream' n'est pas la même chose que' MemoryStream'. 'MemoryStream' hérite de' Stream', tout comme 'FileStream'. Vous pouvez donc les transformer en 'Stream' ... – Marco

+7

Juste une note: Les flux implémentent IDisposable, vous avez donc besoin d'un wrapper qui les utilise pour être sûr. –

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

L'utilisation de l'encodage ASCII rend Panda triste ... :( – jebar8

-5

c'est vieux, mais pour l'aide:

vous pouvez également utiliser le flux StringReader

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

'StringReader' n'est pas un flux –

+0

Les classes intégrées qui dérivent de System.IO.Stream sont répertoriées ici: https://msdn.microsoft.com/fr -us/library/system.io.stream (v = vs.110) .aspx – DVK

+0

@zetoff, confus par StreamReader? – juagicre

Questions connexes