"Merhaba, Amigo, bir kez daha."

"Merhaba Rishi. Bugünkü ders ne hakkında olacak?"

"Bugün size Reader ve Writer'dan bahsedeceğim."

"Ama Rishi, onlar hakkında neredeyse her şeyi zaten biliyorum!"

"Tekrar, öğrenmenin anasıdır."

"Hmm. Pekala, tamam."

" Reader ve Writer , InputStream ve OutputStream'in analoglarıdır , ancak baytlarla değil, karakterlerle çalışırlar. Bazen bayt akışları olarak adlandırılan InputStream  ve  OutputStream'in aksine, karakter akışları olarak da adlandırılırlar  ."

"Biri karakterler için, diğeri baytlar için. Hatırlıyorum."

"Sadece bu da değil. Bu sınıflar özellikle metin ve dizelerle çalışacak şekilde tasarlanmıştır. Bugün bu soyut sınıfların iki klasik uygulamasına bakacağız: FileReader ve FileWriter ."

"İşte FileReader sınıfının yöntemleri:"

Yöntem Tanım
int read() Akıştan bir karakter okur ve onu döndürür.
int read(char cbuf[], int offset, int length) Bir karakter dizisini okur, okunan karakter sayısını döndürür.
boolean ready() Akıştan okumak mümkünse true değerini döndürür.
void close() Giriş akışını kapatır.
int read(java.nio.CharBuffer target) Bir arabelleğe bir dizi karakter okuyun.
int read(char cbuf[]) Bir karakter dizisini okur.
long skip(long n) Akışta n karakteri atlar.
String getEncoding() Akışın geçerli kodlamasını döndürür.

"Pekala, bunların neredeyse tamamını biliyorum. Peki ya FileWriter?"

Yöntem Tanım
void write(int c) Akışa bir karakter yazar.
void write(char cbuf[], int off, int len) Akışa bir karakter dizisi yazar.
void write(char cbuf[]) Akışa bir karakter dizisi yazar.
void write(String str, int off, int len) Dizinin bir bölümünü akışa yazar.
void write(String str) Akışa bir dize yazar.
void flush() Bellekte önbelleğe alınan her şeyi diske yazar.
void close() Akışı kapatır.
String getEncoding() Akışın geçerli kodlamasını döndürür.

"Biliyorum ki!"

"Bu harika. O zaman ilginç bir örneğe bakalım, sonra Diego sana başka görevler verecek."

"Bir dosyayı satır satır nasıl okursunuz? Kodu yazabilir misiniz?"

"Kolay, bak:"

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. Fena değil."

"Fena değil? Her şey basit ve güzel. Kabul et, Rishi - G/Ç iş parçacıkları konusunda zaten mükemmel bir ustalığa sahibim. Peki burada ne geliştirilebilir?"

"Örneğin, şunu yapabilirsin:"

Rishi'nin kodu
File file = new File("c:/document.txt");

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

"Hmm. Bu daha kısa. Ve daha bugün bana tüm bu yöntemlerden bahsettin. Yeniden çalışacağım. Ders için teşekkürler, Rishi."

"İyi şanslar, Amigo."