2010-01-04 6 views

Respuesta

18

El StreamWriter tiene un búfer interno, y una vez que ese búfer está lleno, se enjuagará en el disco. Puede obligarlo a vaciar el disco en cualquier momento llamando al Flush()

Puede especificar qué tan grande de un búfer desea en los constructores de StreamWriters si lo desea.

+1

Flush() no garantiza la escritura real en el disco; simplemente vacía los búferes CLR en los búferes del sistema operativo. Ver [esta pregunta] (http://stackoverflow.com/questions/383324/how-to-ensure-all-data-has-been-physically-written-to-disk). – bavaza

2

corriente está escrito por StreamWriter.Flush.

+5

No declinaré, pero esto no es del todo correcto. Sí, 'Flush' hará exactamente eso, pero ciertamente no es el * único * momento en que la secuencia se escribe antes de cerrar. Vea la respuesta de Matt Greer. –

+1

Eso es cómo puede obligarlo a escribir, pero también se puede escribir configurando AutoFlush() y si el búfer interno se llena antes de que se pueda emitir el enjuague. – GrayWizardx

0

Depende de la secuencia subyacente que se está utilizando, el tamaño del búfer en esa secuencia y otros factores.

Puede forzar una escritura en la secuencia subyacente llamando a flush() en su StreamWriter.

Supongo por su pregunta que está utilizando una secuencia de archivos debajo. En mi experiencia, el enrojecimiento generalmente ocurre entre cada 1-4K de datos, pero no estoy seguro de cuál es el punto exacto.

Cuestiones relacionadas