2011-11-08 36 views
108

Necesito convertir un String a tipo System.IO.Stream para pasar a otro método.Convertir cadena a System.IO.Stream

Intenté esto sin éxito.

Stream stream = new StringReader(contents); 
+0

-1 Bueno, "¿qué no funcionó?" Considere leer detenidamente el espacio de nombres [System.IO] (http://msdn.microsoft.com/en-us/library/29kt2zfk.aspx) ... hay una clase de flujo "en memoria" muy útil. –

+2

No sabía que MemoryStream era lo mismo en Stream. – xbonez

Respuesta

235

Prueba esto:

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

y

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

Gracias. No sabía que MemoryStream era lo mismo que Stream. – xbonez

+3

@xbonez: 'Stream' no es lo mismo que' MemoryStream'. 'MemoryStream' hereda de' Stream', al igual que 'FileStream'. Así que puedes lanzarlos como 'Stream' ... – Marco

+7

Solo una nota: las rutas implementan IDisposable, por lo que necesitas un envoltorio de uso a su alrededor para estar seguros. –

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

El uso de la codificación ASCII hace que Panda triste ... :( – jebar8

-5

esto es viejo, pero ayuda:

también se puede utilizar la corriente StringReader

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

'StringReader' no es una secuencia –

+0

Las clases integradas que se derivan de System.IO.Stream se enumeran aquí: https://msdn.microsoft.com/en -us/library/system.io.stream (v = vs.110) .aspx – DVK

+0

@zetoff, confundido por StreamReader? – juagicre