"Hai, Amigo, sekali lagi."

"Halo untukmu, Rishi. Pelajaran hari ini tentang apa?"

"Hari ini saya akan memberi tahu Anda tentang Pembaca dan Penulis."

"Tapi, Rishi, aku sudah tahu hampir segalanya tentang mereka!"

"Pengulangan adalah ibu dari pembelajaran."

"Hmm. Baiklah, oke."

" Reader dan Writer adalah analog dari InputStream dan OutputStream , tetapi mereka bekerja dengan karakter, bukan byte. Terkadang mereka juga disebut aliran karakter, bukan  InputStream  dan  OutputStream , yang disebut aliran byte."

"Satu untuk karakter, yang lain untuk byte. Saya ingat."

"Bukan hanya itu. Kelas-kelas ini dirancang khusus untuk bekerja dengan teks dan string. Hari ini kita akan melihat dua implementasi klasik dari kelas abstrak ini: FileReader dan FileWriter ."

"Berikut adalah metode kelas FileReader :"

metode Keterangan
int read() Membaca satu karakter dari aliran dan mengembalikannya.
int read(char cbuf[], int offset, int length) Membaca array karakter, mengembalikan jumlah karakter yang dibaca.
boolean ready() Mengembalikan nilai true jika memungkinkan untuk membaca dari aliran.
void close() Menutup aliran masukan.
int read(java.nio.CharBuffer target) Baca satu set karakter ke dalam buffer.
int read(char cbuf[]) Membaca array karakter.
long skip(long n) Melewati n karakter dalam arus.
String getEncoding() Mengembalikan pengodean aliran saat ini.

"Yah, saya tahu hampir semuanya. Tapi bagaimana dengan FileWriter?"

metode Keterangan
void write(int c) Menulis satu karakter ke aliran.
void write(char cbuf[], int off, int len) Menulis array karakter ke aliran.
void write(char cbuf[]) Menulis array karakter ke aliran.
void write(String str, int off, int len) Menulis bagian dari string ke aliran.
void write(String str) Menulis string ke aliran.
void flush() Menulis semua yang di-cache di memori ke disk.
void close() Menutup aliran.
String getEncoding() Mengembalikan pengodean aliran saat ini.

"Saya tahu itu!"

"Bagus sekali. Kalau begitu mari kita lihat satu contoh yang menarik, dan nanti Diego akan memberimu lebih banyak tugas."

"Bagaimana Anda membaca file baris demi baris? Bisakah Anda menulis kodenya?"

"Tenang, lihat:"

Kode
// 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. Lumayan."

"Lumayan? Semuanya sederhana dan indah. Akui saja, Rishi—aku sudah menguasai utas I/O dengan sangat baik. Jadi apa yang bisa diperbaiki di sini?"

"Yah, misalnya, kamu bisa melakukan ini:"

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

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

"Hmm. Itu lebih pendek. Dan baru hari ini kamu memberitahuku tentang semua metode ini. Aku akan mengerjakannya kembali. Terima kasih atas pelajarannya, Rishi."

"Semoga berhasil, Amigo."