BufferredReader
BufferredReader é um fluxo de entrada de caracteres em buffer. Herda do leitor.
O objetivo do BufferredReader é adicionar alguma função de buffer a outros fluxos de entrada de caracteres.
Ao criar um BufferReader, especificaremos um leitor como um parâmetro por meio de seu construtor. O BufferReader lerá os dados no leitor em lotes e cada vez que uma parte é lida no buffer; Depois de operar esta parte dos dados no buffer, a próxima parte dos dados é lida no leitor.
Por que preciso de buffer? O motivo é muito simples, problemas de eficiência! Os dados no buffer são realmente armazenados na memória, enquanto os dados brutos podem ser armazenados em disco rígido ou nandflash; Sabemos que a leitura de dados da memória é pelo menos 10 vezes mais rápida do que a leitura de dados do disco rígido.
Então, por que não ler todos os dados no buffer de uma só vez? Primeiro, pode levar muito tempo para ler todos os dados. Segundo, o preço da memória é muito caro e a capacidade não é tão grande quanto o disco rígido.
Exemplo:
importar java.io.bufferedReader; importar java.io.byteArrayInputStream; importar java.io.file; importar java.io.inputStream; importar java.io.fileReaderBefception; import java.io.ioException; import java.io.filenotFoundException; importação java.io.ioException; import.io.io.filErtFexception; importação java.io.ioException; import.io.io.filErtFexception; importação java.io.ioException; import.io.io.filErtFexception; importação int len = 5; public static void main (string [] args) {testBufferedReader (); } / ** * Função de teste da API buffarreder * / private estático void testBufferedReader () {// Crie um fluxo de caracteres BufferReader, que é a matriz de ArrayLetters, tente {arquivo file = new File ("bufferedreader.txt"); BufferErader in = new BufferredReader (new FileReader (arquivo)); // Leia 5 caracteres do fluxo de personagens. "abcde" para (int i = 0; i <len; i ++) {// Se você puder continuar lendo o próximo caractere, leia o próximo caractere se (in.ready ()) {// leia "Próximo caractere do stream de caracteres" int tmp = in.read (); System.out.printf (" %d: %c/n", i, tmp); }} // Se "esse fluxo de caracteres" não suporta a função de marcação, saia diretamente se (! In.marksupported ()) {System.out.println ("Make não suportado!"); retornar ; } // Marque a "posição do índice atual", ou seja, marque o elemento da 6ª posição - "f" // 1024 corresponde ao Marklimit in.mark (1024); // Pule 22 caracteres. in.skip (22); // Leia 5 caracteres char [] buf = novo char [len]; in.read (buf, 0, len); System.out.printf ("buf =%s/n", string.valueof (buf)); // Leia os dados restantes do line System.out.printf ("readLine =%s/n", in.readline ()); // Redefina o "índice do fluxo de entrada" para a posição marcada por Mark (), ou seja, redefinida para "f". in.Reset (); // Leia 5 caracteres de "Redefinir Stream de caracteres" em BUF. Isto é, leia "fghij" in.read (buf, 0, len); System.out.printf ("buf =%s/n", string.valueof (buf)); in.Close (); } catch (filenotfoundException e) {e.printStackTrace (); } Catch (SegurançaException e) {E.PrintStackTrace (); } catch (ioexception e) {e.printStackTrace (); }}} O conteúdo do bufferredreader.txt lido no programa é o seguinte:
abcdefghijklmnopqrSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
Resultados em execução:
0: A1: B2: C3: D4: EBUF = 01234 LREADLINE = 56789BUF = FGHIJ
BufferWriter
BufferWriter é um fluxo de saída de caracteres em buffer. Herda do escritor.
O objetivo do BufferWriter é adicionar alguma funcionalidade de buffer a outros fluxos de saída de caracteres.
Bufferwriter buffers dados através de uma matriz de caracteres. Quando o buffer está cheio ou o usuário chama a função Flush (), ele grava os dados do buffer no fluxo de saída.
Exemplo:
importar java.io.bufferedwriter; importar java.io.file; importar java.io.outputStream; importar java.io.fileWriter; importar java.io.ioException; importar java.io.filenotfoundException; import java.lang.securityException; 5; // correspondente à letra em inglês "abcdefghijklmnopqrststuvwxyz" // private estático final char [] ArrayLetters = "abcdefghijklmnopqrststwxyz"; Private Static Final Char [] ArrayLetters = New Char [] {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', ',' v ','; public static void main (string [] args) {testbufferedwriter (); } / *** Função de teste da API bufferwriter* / private estático void testBufferedWriter () {// Crie o bufferwriter correspondente ao "Stream de saída de arquivo" // seu tamanho de buffer correspondente é 16, ou seja, quando os dados do buffer> = 16, o conteúdo do buffer será gravado automaticamente para o fluxo de saída. tente {arquivo file = new File ("bufferwriter.txt"); Bufferwriter out = new bufferWriter (new FileWriter (arquivo)); // Escreva os 10 primeiros caracteres da matriz dos Arrayletters para o fluxo de saída. // escreva "Break/n" no fluxo de saída fora.write ('/n'); out.flush (); // readUserInput (); out.Close (); } catch (filenotfoundException e) {e.printStackTrace (); } Catch (SegurançaException e) {E.PrintStackTrace (); } catch (ioexception e) {e.printStackTrace (); }} / *** Leia a entrada do usuário* / private estático void readUserInput () {System.out.println ("Insira um texto:"); Scanner Reader = new Scanner (System.in); // Aguarde por uma string de entrada str = leitor.next (); System.out.printf ("A entrada é: %s/n", str); }}Resultado em execução: o arquivo "bufferwriter.txt" é gerado e o conteúdo do arquivo é "abcdefghij".