"Hai, Amigo, sekali lagi."

"Hello kepada awak, Rishi. Apakah pelajaran hari ini?"

"Hari ini saya akan memberitahu anda tentang Pembaca dan Penulis."

"Tetapi, Rishi, saya sudah tahu hampir semua tentang mereka!"

"Pengulangan adalah ibu kepada pembelajaran."

"Hmm. Baiklah."

" Pembaca dan Penulis adalah analog kepada InputStream dan OutputStream , tetapi ia berfungsi dengan aksara, bukan bait. Kadangkala ia juga dipanggil strim aksara, berbanding  InputStream  dan  OutputStream , yang dipanggil strim bait."

"Satu untuk aksara, satu lagi untuk bait. Saya ingat."

"Bukan itu sahaja. Kelas ini direka khas untuk berfungsi dengan teks dan rentetan. Hari ini kita akan melihat dua pelaksanaan klasik bagi kelas abstrak ini: FileReader dan FileWriter ."

"Berikut ialah kaedah kelas FileReader :"

Kaedah Penerangan
int read() Membaca satu aksara daripada strim dan mengembalikannya.
int read(char cbuf[], int offset, int length) Membaca susunan aksara, mengembalikan bilangan aksara yang dibaca.
boolean ready() Mengembalikan benar jika boleh dibaca daripada strim.
void close() Menutup aliran input.
int read(java.nio.CharBuffer target) Baca satu set aksara ke dalam penimbal.
int read(char cbuf[]) Membaca pelbagai aksara.
long skip(long n) Melangkau n aksara dalam strim.
String getEncoding() Mengembalikan pengekodan semasa strim.

"Baiklah, saya tahu hampir semua ini. Tetapi bagaimana dengan FileWriter?"

Kaedah Penerangan
void write(int c) Menulis satu aksara ke strim.
void write(char cbuf[], int off, int len) Menulis tatasusunan aksara ke strim.
void write(char cbuf[]) Menulis tatasusunan aksara ke strim.
void write(String str, int off, int len) Menulis sebahagian daripada rentetan kepada strim.
void write(String str) Menulis rentetan ke strim.
void flush() Menulis semua yang dicache dalam memori ke cakera.
void close() Menutup strim.
String getEncoding() Mengembalikan pengekodan semasa strim.

"Saya tahu itu!"

"Itu bagus. Kemudian mari kita lihat satu contoh yang menarik, dan kemudian Diego akan memberi anda lebih banyak tugas."

"Bagaimana anda membaca fail baris demi baris? Bolehkah anda menulis kod itu?"

"Mudah, lihat:"

Kod
// Create a list for storing the lines
List<String> list = new ArrayList<String>();

// Open the file
File file = new File("c:/document.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));

// As long as the file isn't empty, read from it
while (reader.ready())
{
 list.add(reader.readLine());
}

// Close the file
reader.close();

"Hmm. Not bad."

"Not bad? Semuanya ringkas dan cantik. Akui, Rishi—saya sudah mempunyai penguasaan yang sangat baik dalam benang I/O. Jadi apa yang boleh diperbaiki di sini?"

"Nah, sebagai contoh, anda boleh melakukan ini:"

Kod Rishi
File file = new File("c:/document.txt");

List list = Files.readAllLines(file.toPath(), Charset.defaultCharset());

"Hmm. Itu lebih pendek. Dan baru hari ini awak memberitahu saya tentang semua kaedah ini. Saya akan mengolahnya semula. Terima kasih atas pengajarannya, Rishi."

"Semoga berjaya, Amigo."