write visual usar new c# flush memorystream streamwriter

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:

  1. ¿Necesito usar el rubor dentro del bucle para conservar el orden?
  2. ¿Es legal devolver MemoryStream.ToArray() ? Usando el using -block como una convención, me temo que desordenará las cosas.

Actualizar

No importa esta respuesta, me confundí con los escritores ...

  1. No, se conservará el orden ( actualización: tal vez no). La descarga es útil / necesaria en otras situaciones, aunque no recuerdo cuándo.
  2. Creo que sí, usarlo asegura que todo se limpie bien.