plugin files filedownload descargar con aspx c# .net filestream

c# - files - filedownload aspx



¿Cuál es la diferencia entre FileStream.Flush() y FileStream.Flush(True)? (3)

Cuando llama a Flush() o Flush(false) , FileStream "copia al archivo todos los datos escritos previamente en el búfer y borra el búfer (excepto por 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. Es solo pasar datos al sistema operativo.

Sin embargo, las operaciones de E / S en el sistema operativo Windows también se almacenan en búfer: la escritura de datos en el disco se puede posponer hasta que el sistema esté listo para hacerlo. Por lo tanto, la eliminación de todos los búferes intermedios obliga a escribir datos almacenados en el disco. Los buffers aquí se refieren a los buffers internos de Windows [caché del sistema de archivos].

Por cierto, cuando cierre 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.

MSDN dice que MSDN "también borra todos los buffers de archivos intermedios".

¿Qué significa exactamente "todos los buffers de archivos intermedios"?


Esto hará una llamada adicional para vaciar el búfer al archivo:

Win32Native.FlushFileBuffers(this._handle);


Hace que los datos del archivo que se almacenan en la memoria caché del sistema de archivos se escriban en el disco. Estos datos normalmente se escriben de forma perezosa, según la posición del cabezal de escritura del disco. Tener un gigabyte de datos en caché es técnicamente posible, por lo que puede tomar bastante tiempo. Si esto es importante para usted, entonces considere la opción FileOptions.WriteThrough lugar. Deshabilita el almacenamiento en caché de escritura completamente. Esto puede ser muy costoso; Descubrirás qué tan lentos son los discos duros.