Listador buffered
BufferedReader es una secuencia de entrada de caracteres buffered. Hereda del lector.
El propósito de BufferedReader es agregar alguna función de almacenamiento en búfer a otras secuencias de entrada de caracteres.
Al crear un BufferReader, especificaremos un lector como parámetro a través de su constructor. El BufferReader leerá los datos en el lector en lotes, y cada vez que una parte se lee en el búfer; Después de operar esta parte de los datos en el búfer, la siguiente parte de los datos se lee del lector.
¿Por qué necesito buffering? ¡La razón es muy simple, problemas de eficiencia! Los datos en el búfer en realidad se almacenan en la memoria, mientras que los datos sin procesar pueden almacenarse en el disco duro o Nandflash; Sabemos que leer datos de la memoria es al menos 10 veces más rápido que leer datos del disco duro.
Entonces, ¿por qué no solo leer todos los datos en el búfer a la vez? Primero, puede llevar mucho tiempo leer todos los datos. En segundo lugar, el precio de la memoria es muy costoso, y la capacidad no es tan grande como el disco duro.
Ejemplo:
import java.io.bufferedReader; import java.io.bytearrayinputStream; import java.io.file; import java.io.inputStream; import java.io.filereader; import java.io.ioexception; import java.io.filenotfoundfound; import java.lang.securityException; final int len = 5; public static void main (string [] args) {testBuffereDreader (); } / ** * Función de prueba de API de BufferedReader * / private static void testbufferedReader () {// crea una secuencia de caracteres de BufferedReader, que es la matriz ArrayLetters intente {archivo de archivo = nuevo archivo ("bufferedreader.txt"); BufferedReader in = new BufferedReader (new FileReader (archivo)); // Leer 5 caracteres de la transmisión de personajes. "ABCDE" para (int i = 0; i <len; i ++) {// Si puede continuar leyendo el siguiente carácter, lea el siguiente carácter if (in.ready ()) {// lea "siguiente carácter del flujo de caracteres" int tmp = in.read (); System.out.printf (" %d: %c/n", i, tmp); }} // Si "esta transmisión de caracteres" no admite la función de marcado, salga directamente si (! In.marksupported ()) {system.out.println ("¡no compatible!"); devolver ; } // marque "posición de índice de corriente", es decir, marque el elemento de la sexta posición - "f" // 1024 corresponde a marklimit in.mark (1024); // omita 22 caracteres. in.skip (22); // leer 5 caracteres char [] buf = new Char [Len]; in.read (buf, 0, len); System.out.printf ("buf =%s/n", string.valueOf (buf)); // Lea los datos restantes de la línea System.out.printf ("Readline =%s/n", in.readline ()); // Restablecer el "índice de la secuencia de entrada" a la posición marcada por Mark (), es decir, restablecer a "f". in.reset (); // Leer 5 caracteres de "Restablecer la transmisión de caracteres" en BUF. Es decir, lea "fghij" in.read (buf, 0, len); System.out.printf ("buf =%s/n", string.valueOf (buf)); cercar(); } catch (FileNotFoundException e) {E.PrintStackTrace (); } catch (SecurityException e) {E.PrintStackTrace (); } catch (ioException e) {E.PrintStackTrace (); }}} El contenido de BufferedReader.txt Leer en el programa es el siguiente:
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
Resultados de ejecución:
0: A1: B2: C3: D4: Ebuf = 01234 Readline = 56789BUF = FGHIJ
Escritor buffered
BufferedWriter es una secuencia de salida de carácter buffered. Hereda del escritor.
El propósito de BufferedWriter es agregar alguna funcionalidad de almacenamiento en búfer a otras secuencias de salida de caracteres.
BufferedWriter buffer datos a través de una matriz de caracteres. Cuando el búfer está lleno o el usuario llama a la función FLUSH (), escribe los datos del búfer en la secuencia de salida.
Ejemplo:
import java.io.bufferedwriter; import java.io.file; import java.io.outputStream; import java.io.filewriter; import java.io.io.ioexception; import java.io.filenotfoundException; import java.lang.securityException; import java.util.scanner; público buffeDeNTRITET = 5; // correspondiente a la letra inglesa "abcdefghijklmnopqrstuvwxyz" // private static final char [] arrayletters = "abcdefghijklmnopqrstuvwxyz"; privado estático final Char [] Arrayletters = nuevo char [] {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', x ',' y ',' »; public static void main (string [] args) {testBufferedWriter (); } / *** Función de prueba de API de BufferedWriter* / Private static void testBufferedWriter () {// Cree el compatidor buffered correspondiente al "flujo de salida de archivo" // Su tamaño de búfer correspondiente es 16, es decir, cuando los datos de búfer> = 16, el contenido del búfer se escribirá automáticamente en la transmisión de salida. intente {archivo archivo = nuevo archivo ("bufferwriter.txt"); BufferedWriter out = new BufferedWriter (nuevo FileWriter (archivo)); // Escribe los primeros 10 caracteres de la matriz ArrayLetters a la transmisión de salida. Write (ArrayLetters, 0, 10); // Escribir "Line Break/N" a la salida Stream out.write ('/n'); out.flush (); // ReadUserInput (); out.close (); } catch (FileNotFoundException e) {E.PrintStackTrace (); } catch (SecurityException e) {E.PrintStackTrace (); } catch (ioException e) {E.PrintStackTrace (); }} / *** Lea la entrada del usuario* / private static void readUserInput () {System.out.println ("Ingrese un texto:"); Lector de escáner = new Scanner (System.in); // espera una cadena de entrada str = lector.next (); System.out.printf ("La entrada es: %s/n", str); }}Ejecutar el resultado: se genera el archivo "bufferwriter.txt", y el contenido del archivo es "ABCDEFGHIJ".