write sirve que para java stream flush filewriter

sirve - al ras en java.io.FileWriter



flush java para que sirve (9)

Cerrar automáticamente enrojece. No necesitas llamarlo.

Tengo una pregunta en mi mente que, mientras escribo en el archivo, antes de que se cierre, ¿deberíamos incluir flush ()? Si es así, ¿qué hará exactamente? ¿No transmite la descarga automática? EDITAR:

Así que al ras de lo que realmente hace?


Como se dijo, por lo general no es necesario enjuagar.

Solo tiene sentido si, por alguna razón, desea que otro proceso vea el contenido completo de un archivo con el que está trabajando, sin cerrarlo. Por ejemplo, se podría usar para un archivo que se modifica simultáneamente por varios procesos, aunque con MUCHO cuidado :-)


Los escritores y las secuencias generalmente almacenan en la memoria algunos de los datos de salida y tratan de escribirlos en bloques más grandes a la vez. el vaciado provocará una escritura inmediata en el disco desde el búfer, por lo que si el programa falla, esos datos no se perderán. Por supuesto, no hay garantía, ya que el disco puede no escribir físicamente los datos inmediatamente, por lo que aún podría perderse. Pero entonces no sería culpa del programa Java :)

PrintWriters auto-flush (por defecto) cuando escribe un final de línea, y por supuesto, las secuencias y los buffers se vacían cuando los cierra. Aparte de eso, hay lavado solo cuando el búfer está lleno.


No es necesario que haga una descarga porque close () lo hará por usted.

Desde el javadoc:

"Cierre el flujo, vacíelo primero. Una vez que se haya cerrado un flujo, las invocaciones adicionales de write () o flush () harán que se lance una excepción IOException. El cierre de un flujo cerrado previamente, sin embargo, no tiene efecto".


No tiene sentido llamar a flush () justo antes de cerrar (), como han dicho otros. El tiempo para usar flush () es si mantiene el archivo abierto pero quiere asegurarse de que las escrituras anteriores se hayan completado por completo.


Otro caso de uso para el lavado en el programa es escribir el progreso del trabajo de larga duración en el archivo (para que se pueda detener y reiniciar más tarde. Desea estar seguro de que los datos están seguros en la unidad.

while (true) { computeStuff(); progresss += 1; out.write(String.format("%d", progress)); out.flush(); } out.close();


Para responder a su pregunta sobre qué hace realmente la descarga, se asegura de que cualquier cosa que haya escrito en la transmisión, un archivo en su caso, se escriba en el archivo allí mismo.

Java puede realizar un almacenamiento en búfer, lo que significa que conservará los datos escritos en la memoria hasta que tenga una cierta cantidad, y luego los escribirá todo en el archivo de una sola vez, lo que es más eficiente. La desventaja de esto es que el archivo no está necesariamente actualizado en un momento dado. Vaciar es una forma de decir "actualizar el archivo".

Primero, cierre las llamadas al ras para asegurarse de que después de cerrar el archivo tenga lo que usted esperaría ver en él, por lo tanto, como otros lo han señalado, no es necesario enjuagar antes de cerrar.


Recomiendo encarecidamente llamar al ras antes de cerrar. Básicamente, escribe los datos almacenados en el archivo.

Si llama explícitamente a flush , puede estar seguro de que cualquier IOException que salga de close es realmente catastrófica y está relacionada con la liberación de recursos del sistema.

Cuando se flush , puede manejar su IOException de la misma manera que maneja sus excepciones de escritura de datos.


FileWriter es una clase malvada ya que recoge cualquier conjunto de caracteres que esté allí, en lugar de tomar un conjunto de caracteres explícito. Incluso si desea el valor predeterminado, sea explícito al respecto.

La solución habitual es OutputStreamWriter y FileOutputStream . Es posible que el decorador lance una excepción. Por lo tanto, debe poder cerrar el flujo incluso si el escritor nunca se construyó. Si va a hacer eso, solo necesita limpiar el escritor (en el caso feliz) y siempre cerrar la secuencia. (Solo para ser confusos, algunos decoradores, por ejemplo para el manejo de cremalleras, tienen recursos que requieren un cierre).