2011-11-18 15 views
10

Conozco la idea general, pero no estoy seguro de si tiene algún efecto, ya que la API de Android dice lo siguiente: "Elimina esta secuencia. Las implementaciones de este método deben garantizar que todos los datos almacenados en el búfer se escriben. Esta implementación no hace nada. "Ventajas de usar flush() close() en las transmisiones de Android?

Esta implementación no hace nada < - ¿Eso significa que es inútil o me falta algo?

Respuesta

4

Si leen documentos extendidos en Oracle

http://download.oracle.com/javase/1.4.2/docs/api/java/io/OutputStream.html#flush()

rubores este flujo de salida y fuerza a cualquier bytes de salida tamponada a ser escritos. El contrato general de descarga es que llamar es una indicación de que, si los bytes escritos previamente han sido almacenados temporalmente por la implementación del flujo de salida, dichos bytes deben escribirse inmediatamente en su destino previsto.

El método de descarga de OutputStream no hace nada.

Medios, el método en sí no hace nada, y es abstracto, por lo que cualquier clase subyacente puede implementar su propia versión de los flujos de lavado y obligándolos a escribir (no esperando en la cola de escritura)

Pero de todos modos, como Guillaume señaló, es una buena práctica llamarlo de todos modos. Si más tarde reemplaza su transmisión por otra implementación que sí la use, lo lamentará.

Dependiendo del sistema operativo, flush() no hace más que forzar la escritura de datos en el sistema operativo.

y

flush() no hace nada en FileOutputStream. Solo es útil en transmisiones con buffer.

y de javadoc de close(), solo para tener en cuenta que no tiene que enjuagar el flujo si lo está cerrando inmediatamente después.

Cierre la secuencia, enjuagándola primero. Una vez que se ha cerrado una secuencia, más invocaciones write() o flush() provocarán que se genere una excepción IOException. Sin embargo, cerrar una secuencia previamente cerrada no tiene ningún efecto.

relacionada:
FileOutputStream.close is really slow when writing large file
flush in java.io.FileWriter

+0

Pero, ¿InputStream y OutputStream tienen uso de ella? o es inútil llamar? – Warpzit

+0

No tiene sentido cuando no uso flujos almacenados en búfer, creo. Las secuencias no almacenadas en búfer deben escribirse en el destino lo antes posible, de acuerdo con OS y HW subyacentes. –

+0

Entonces, fileoutputstream no tiene uso, y lo mismo ocurre con inputstream. – Warpzit

Cuestiones relacionadas