Si me dan un MemoryStream
que sé que se ha llenado con un String
, ¿cómo obtengo una String
copia de seguridad?
.net
vb.net
string
memorystream
Brian
fuente
fuente
Respuestas:
Este ejemplo muestra cómo leer y escribir una cadena en un MemoryStream.
fuente
También puedes usar
No creo que esto sea menos eficiente, pero no podría jurarlo. También te permite elegir una codificación diferente, mientras que usando un StreamReader deberías especificarlo como parámetro.
fuente
OutOfMemoryException
s. El uso de en suStreamReader
lugar resolvió el problema.00
al comienzo de la cadena.00 3C 3F
->.<?
en Hex Editor pero en VS o Notepad ++:<?
. Por lo tanto, no puede ver la diferencia incluso si compara las cadenas a simple vista, solo una herramienta de comparación o un editor hexadecimal mostrarán la diferencia. Si aún lo usa, piense en String.TrimStart. Ver: docs.microsoft.com/en-us/dotnet/api/…Usando un StreamReader para convertir el MemoryStream en una Cadena.
fuente
use un StreamReader , luego puede usar el método ReadToEnd que devuelve una cadena.
fuente
Basestream
debería haber establecido su posición en 0. Me gustamemoryStream.Position = 0;
.fuente
Las soluciones anteriores no funcionarían en los casos en que está involucrada la codificación. Aquí hay, como una "vida real", un ejemplo de cómo hacer esto correctamente ...
fuente
En este caso, si realmente desea utilizar el
ReadToEnd
método deMemoryStream
una manera fácil, puede utilizar este Método de extensión para lograr esto:Y puede usar este método de esta manera:
fuente
Este ejemplo muestra cómo leer una cadena de un MemoryStream, en el que he usado una serialización (usando DataContractJsonSerializer), pasar la cadena de algún servidor al cliente y luego, cómo recuperar el MemoryStream de la cadena pasada como parámetro, luego , deserialice el MemoryStream.
He usado partes de diferentes publicaciones para realizar esta muestra.
Espero que esto ayude.
fuente
Una versión ligeramente modificada de la respuesta de Brian permite la gestión opcional del inicio de lectura. Este parece ser el método más fácil. probablemente no sea el más eficiente, pero fácil de entender y usar.
fuente
¿Por qué no hacer un buen método de extensión en el tipo MemoryStream?
Por supuesto, tenga cuidado al usar estos métodos junto con los métodos estándar. :) ... necesitará usar ese práctico streamLock si lo hace, para concurrencia.
fuente
Necesito integrarme con una clase que necesita una secuencia para escribir en ella:
Creo una clase simple que puede ayudar a reducir líneas de código para uso múltiple:
entonces puede reemplazar la muestra con una sola línea de código
fuente