visual - usar streamwriter c#
¿Necesito hacer StreamWriter.flush()? (2)
Rasque la respuesta anterior: no me había dado cuenta de que estaba usando dos envoltorios alrededor de la misma secuencia. Eso me parece algo arriesgado.
De cualquier manera, pondría el StreamWriter
y el BinaryWriter
en sus propios bloques de using
.
Ah, y sí, es legal llamar a ToArray()
en el MemoryStream
; los datos se conservan incluso después de que se eliminan.
Si realmente quieres usar los dos envoltorios, lo haría así:
using (MemoryStream stream = new MemoryStream())
{
using (StreamWriter normalWriter = new StreamWriter(stream))
using (BinaryWriter binaryWriter = new BinaryWriter(stream))
{
foreach(...)
{
binaryWriter.Write(number);
binaryWriter.Flush();
normalWriter.WriteLine(name); //<~~ easier to read afterward.
normalWriter.Flush();
}
}
return MemoryStream.ToArray();
}
Tengo que decir que, sin embargo, desconfío de usar dos envoltorios alrededor del mismo flujo. Tendrá que seguir limpiando cada uno de ellos después de cada operación para asegurarse de no terminar con datos impares. Podría establecer la propiedad AutoFlush
en true para mitigar la situación, y creo que BinaryWriter
actualmente no requiere en realidad el BinaryWriter
(es decir, no almacena ningún dato), pero confiar en eso parece riesgoso.
Si tiene que mezclar datos binarios y de texto, usaría un BinaryWriter
y escribía explícitamente los bytes para la cadena, obteniéndola con Encoding.GetBytes(string)
.
Supongamos que este código C #:
using (MemoryStream stream = new MemoryStream())
{
StreamWriter normalWriter = new StreamWriter(stream);
BinaryWriter binaryWriter = new BinaryWriter(stream);
foreach(...)
{
binaryWriter.Write(number);
normalWriter.WriteLine(name); //<~~ easier to reader afterward.
}
return MemoryStream.ToArray();
}
Mis preguntas son:
- ¿Necesito usar el rubor dentro del bucle para conservar el orden?
- ¿Es legal devolver
MemoryStream.ToArray()
? Usando elusing
-block como una convención, me temo que desordenará las cosas.
Actualizar
No importa esta respuesta, me confundí con los escritores ...
- No, se conservará el orden ( actualización: tal vez no). La descarga es útil / necesaria en otras situaciones, aunque no recuerdo cuándo.
- Creo que sí, usarlo asegura que todo se limpie bien.