Recientemente, estaba aprendiendo IO Streams y descubrí que la función FLUSH () aparece cada vez. Revisé su función y las funciones principales son las siguientes
/
Respuesta general e incorrecta:
Los datos en el búfer se guardan hasta que el búfer está lleno. También puede usar el método FLUSH para forzar los datos en el búfer a escribir o usar el método Close () para cerrar la secuencia. Antes de cerrar la transmisión, la transmisión de salida del búfer escribe los datos del búfer a la vez. Flash () y Close () fuerza los datos a escribir, por lo que los dos resultados son los mismos. Si no lo escribe, encontrará que no puede escribirlo con éxito.
En respuesta a la respuesta anterior, se dio una respuesta precisa
FileOutputStream hereda outputStream y no proporciona la reescritura del método FLUSH (). Entonces, no importa cuánto contenido escriba, pasará directamente la transmisión binaria a la E/S del sistema operativo subyacente. Flush no tiene ningún efecto. Las funciones de flujo de entrada y salida de la serie buffered se pueden ver a partir de la palabra buffered que usan buffers. La aplicación tiene que comunicarse con el dispositivo cada vez que IO, que es muy baja. Por lo tanto, para mejorar la eficiencia, el búfer se escribe primero en el búfer al escribir en el dispositivo. Cuando el búfer tiene suficientes datos, se escribirá en el dispositivo en su conjunto.
Use BufferedxxxStream. El tamaño de búfer predeterminado es de 8k. Al leer, el búfer se llenará (o se lee el archivo) todo el tiempo. Al escribir, el contenido se enviará al búfer del núcleo después de que el búfer esté lleno (o operación de descarga). La razón de la alta eficiencia es evitar caer en el núcleo del sistema operativo para cada byte leído (esta es una operación que requiere mucho tiempo). Para un código específico, consulte la API usted mismo.
También adjuntaré una respuesta de la pregunta de Baidu.
flush () significa forzar el contenido del búfer para ser escrito. Debido a ciertos mecanismos del sistema operativo, para evitar la lectura y la escritura continua del disco, existe un concepto de escritura retrasada. (Tenga cuidado de no confundirse con fruta () actualizar), se usa principalmente en IO, es decir, borrar los datos del búfer. En general, al leer y escribir flujos, los datos se leen primero en la memoria y luego se escriben en un archivo. Cuando lee los datos, no significa que sus datos se hayan escrito, porque todavía hay una parte que puede dejarse en el búfer de memoria. En este momento, si llama al método Close () y cierra la transmisión de lectura y escritura, entonces esta parte de los datos se perderá, por lo que debe enjuagar () antes de cerrar la transmisión de lectura y escritura. .
Lo mismo es cierto en un servidor web de red. Para evitar que se envíe un mensaje después de escribir un byte, hay un concepto de un búfer, como un área de memoria de 64K, cuando el búfer está lleno, se escribe en el disco a la vez (o se envía al navegador del cliente).
El método de descarga generalmente se ejecuta cuando se completan el programa. Luego siga el método de cierre. Por ejemplo:
// Obtener la transmisión de salida. Por supuesto, depende del entorno específico. PrintWriter out = util.getwriter (); out.println ("emite alguna información, tal vez mucho"); out.flush (); out.close ();En pocas palabras, el método FLUSH () es generar todos los contenidos almacenados en la memoria (salida por lotes). Comúnmente utilizado, por ejemplo, es un ejemplo típico en la clase FileWriter. Además de usar la salida de descarga, la llamada final al método de cierre también será la salida por lotes.
import java.io.filewriter; import java.io.ioException; public class A04 {public static void main (string args []) {FileWriter fw; try {fw = new FileWriter ("c: //try.txt"); fw.write ("hola"); // fw.close (); // Esta oración no se agrega, el archivo no se puede escribir y el archivo está en blanco. System.out.println ("OK"); } Catch (ioException e) {// tODO Auto Generated BLOCK E.PrintStackTRace (); }}}Resumir
Lo anterior es todo el contenido de este artículo sobre el papel y los métodos de uso de las funciones de descarga en el lenguaje Java. Espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a otros temas relacionados en este sitio. Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!