BufferedReader
BufferedReader adalah aliran input karakter buffered. Itu mewarisi dari pembaca.
Tujuan BufferedReader adalah untuk menambahkan beberapa fungsi buffering ke aliran input karakter lainnya.
Saat membuat bufferreader, kami akan menentukan pembaca sebagai parameter melalui konstruktornya. BufferReader akan membaca data di pembaca dalam batch, dan setiap kali sebagian dari itu dibaca ke dalam buffer; Setelah mengoperasikan bagian data ini dalam buffer, bagian selanjutnya dari data dibaca dari pembaca.
Mengapa saya perlu buffering? Alasannya sangat sederhana, masalah efisiensi! Data dalam buffer sebenarnya disimpan dalam memori, sedangkan data mentah dapat disimpan dalam hard disk atau nandflash; Kita tahu bahwa membaca data dari memori setidaknya 10 kali lebih cepat daripada membaca data dari hard disk.
Lalu mengapa tidak hanya membaca semua data ke buffer pada satu waktu? Pertama, mungkin butuh waktu lama untuk membaca semua data. Kedua, harga memori sangat mahal, dan kapasitasnya tidak sebesar hard drive.
Contoh:
Impor java.io.bufferedReader; impor java.io.bytearrayinputstream; impor java.io.file; impor java.io.inputstream; impor java.io.fileReader; impor java.ioexception; impor java.io.filenotfoundExceptioncception; {private static final int len = 5; public static void main (string [] args) {testBufferedReader (); } / ** * BufferedReader API Test Function * / Private static void testBufferedReader () {// Buat aliran karakter buferedReader, yang merupakan array arrayletters coba {file file = file baru ("buferedreader.txt"); BufferedReader di = BufferedReader baru (filereader baru (file)); // Baca 5 karakter dari aliran karakter. "ABCDE" untuk (int i = 0; i <len; i ++) {// Jika Anda dapat terus membaca karakter berikutnya, baca karakter berikutnya jika (in.ready ()) {// baca "Karakter berikutnya dari stream karakter" int tmp = in.read (); System.out.printf (" %d: %c/n", i, tmp); }} // Jika "aliran karakter ini" tidak mendukung fungsi penandaan, keluar secara langsung jika (! In.marksupported ()) {System.out.println ("Buat tidak didukung!"); kembali ; } // Tandai "posisi indeks saat ini", yaitu, tandai elemen posisi ke -6 - "f" // 1024 sesuai dengan Marklimit in.mark (1024); // Lewati 22 karakter. in.skip (22); // Baca 5 karakter char [] buf = char baru [len]; in.read (buf, 0, len); System.out.printf ("buf =%s/n", string.valueof (buf)); // Baca data yang tersisa dari line system.out.printf ("readline =%s/n", in.readline ()); // Setel ulang "indeks aliran input" ke posisi yang ditandai oleh mark (), yaitu, setel ulang ke "f". in.reset (); // Baca 5 karakter dari "reset stream karakter" menjadi buf. Yaitu, baca "fghij" in.read (buf, 0, len); System.out.printf ("buf =%s/n", string.valueof (buf)); melampirkan(); } catch (FileNotFoundException e) {e.printstacktrace (); } catch (SecurityException e) {E.PrintStackTrace (); } catch (ioException e) {e.printstacktrace (); }}} Konten BufferedReader.txt dibaca dalam program ini adalah sebagai berikut:
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSUVWXYZ
Hasil Menjalankan:
0: A1: B2: C3: D4: EBUF = 01234READLINE = 56789BUF = FGHIJ
BufferedWriter
BufferedWriter adalah aliran output karakter buffered. Itu mewarisi dari penulis.
Tujuan dari bufferedWriter adalah untuk menambahkan beberapa fungsi buffering ke aliran output karakter lainnya.
Data bufferedwriter buffer melalui array karakter. Ketika buffer penuh atau pengguna memanggil fungsi flush (), ia menulis data buffer ke aliran output.
Contoh:
Impor java.io.bufferedwriter; impor java.io.file; impor java.outputStream; impor java.io.filewriter; import java.io. int len = 5; // sesuai dengan surat bahasa Inggris "ABCDEFGHIJKLMNOPQRSUVWXYZ" // Private Static Final Char [] Arrayletters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; Private Static Final Char [] Arrayletters = Char baru [] {'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','z'}; public static void main (string [] args) {testBufferedWriter (); } / *** BufferedWriter API Test Function* / Private static void testBufferedWriter () {// Buat bufferedWriter yang sesuai dengan "aliran output file" // Ukuran buffer yang sesuai adalah 16, yaitu, ketika data buffer> = 16, konten buffer akan ditulis secara otomatis ke aliran output. coba {file file = file baru ("bufferwriter.txt"); BufferedWriter out = BufferedWriter baru (FileWriter baru (file)); // Tulis 10 karakter pertama dari array arrayletters ke aliran output out.write (arrayletters, 0, 10); // tulis "line break/n" ke aliran output out.write ('/n'); out.flush (); // readUserInput (); out.close (); } catch (FileNotFoundException e) {e.printstacktrace (); } catch (SecurityException e) {E.PrintStackTrace (); } catch (ioException e) {e.printstacktrace (); }} / *** Baca input pengguna* / private static void readUserInput () {System.out.println ("Harap masukkan teks:"); Pembaca Pemindai = Pemindai Baru (System.in); // tunggu string input str = reader.next (); System.out.printf ("Inputnya adalah: %s/n", str); }}Hasil menjalankan: File "bufferwriter.txt" dihasilkan, dan konten file adalah "abcdefghij".