Cuando se llama a Flush()
o Flush(false)
, FileStream
"copia en el archivo de los datos previamente escritos en la memoria intermedia y limpia el búfer (excepto para su estado del codificador) ". Buffer aquí significa buffer interno de la clase FileStream
. Y copiar en un archivo no es escribir datos en el disco. Solo está pasando datos al sistema operativo.
Pero, las operaciones IO en el sistema operativo Windows también se almacenan en búfer: la escritura de datos en el disco podría posponerse hasta que el sistema esté listo para hacerlo. Por lo tanto, borrar todos los búferes intermedios obliga a escribir datos almacenados en el búfer al disco. Buffers aquí significa los búferes internos de Windows [File system cache].
BTW al cerrar el archivo, todos los datos almacenados en el búfer se escribirán en el disco automáticamente. Por lo tanto, necesita esto solo si necesita que se vacíen los datos antes de que se cierre el identificador de archivo.
Nota La descarga (verdadera) se ha roto en determinadas condiciones por cada informe de error de Microsoft http://connect.microsoft.com/VisualStudio/feedback/details/634385/filestream-flush-flushtodisk-true-call-does-not-flush -the-buffers-to-disk # details. MS lo arregló, pero no dice en qué versión de .NET está arreglado. – jimvfr
¿Alguna palabra sobre en qué versión de .NET se ha corregido este error? – BaltoStar