"Merhaba, Amigo!"

"Merhaba Ellie!"

"Bugün size StringReader ve StringWriter derslerinden bahsetmek istiyorum . Prensip olarak sizin için yeni olacak pek bir şey olmayacak ama bazen bu dersler çok faydalı oluyor. Ama en azından bilmenizi istiyorum. onların var olduğunu."

"Bu sınıflar, soyut Reader ve Writer sınıflarının en basit uygulamalarıdır. Ve temelde FileReader ve FileWriter'a benzerler. Ancak, bunların aksine, bunlar diskteki bir dosyadaki verilerle çalışmaz. Bunun yerine, bir String ile çalışırlar. JVM'nin hafızasında."

"Böyle derslere neden ihtiyacımız olsun ki?"

"Bazen bunlara ihtiyaç duyulur. Esasen, StringReader String ve Reader sınıfları arasında bir bağdaştırıcıdır . StringWriter ise Writer'ı miras alan bir String'tir . Evet... Bunun en iyi açıklama olmadığını söyleyebilirim. önce örnekler."

"Örneğin, kendisine iletilen Reader nesnesinden verileri okuyan yönteminizi test etmek istediğinizi varsayalım. Bunu şu şekilde yapabiliriz:"

Bir Reader nesnesinden okuma:
public static void main (String[] args) throws Exception
{
 String test = "Hi!\n My name is Richard\n I'm a photographer\n";

 // This line is key: we "convert" the String into a Reader.
 StringReader reader = new StringReader(test);

 executor(reader);
}

public static void executor(Reader reader) throws Exception
{
 BufferedReader br = new BufferedReader(reader);
 String line;
 while (line = br.readLine() != null)
 {
 System.out.println(line);
 }
}

"Başka bir deyişle, basitçe bir String aldık, onu bir StringReader'a sardık ve ardından bir Reader nesnesi yerine onu geçtik? Ve ihtiyacımız olan her şey ondan okunacak mı?"

"Evet. Hmm. Bunun bir anlamı var. Şimdi StringWriter'ın yöntemlerini test edelim. Bunu yapmak için örneği daha karmaşık hale getireceğiz. Şimdi satırları okuyup ekranda göstermeyecek, bunun yerine onları tersine çevirecek ve yazar nesnesine yazdıracaktır. Örneğin:"

Okuyucu nesnesinden okuma ve yazar nesnesine yazma:
public static void main (String[] args) throws Exception
{
 // The Reader must read this String.
 String test = "Hi!\n My name is Richard\n I'm a photographer\n";

 // Wrap the String in a StringReader.
 StringReader reader = new StringReader(test);

 // Create a StringWriter object.
 StringWriter writer = new StringWriter();

 // Copy strings from the Reader to the Writer, after first reversing them.
 executor(reader, writer);

 // Get the text that was written to the Writer.
 String result = writer.toString();

 // Display the text from the Writer on the screen.
 System.out.println("Result: "+ result);
}

public static void executor(Reader reader, Writer writer) throws Exception
{
 BufferedReader br = new BufferedReader(reader);
String line;

 // Read a string from the Reader.
while (line = br.readLine()) != null)
 {

 // Reverse the string.
  StringBuilder sb = new StringBuilder(line);
  String newLine = sb.reverse().toString();

 // Write the string to the Writer.
  writer.write(newLine);
 }
}

"Bu yazara yazılan her şeyi saklayan bir dize içeren bir StringWriter nesnesi oluşturduk . Ve onu elde etmek için, toString () yöntemini çağırmanız yeterlidir ."

"Hmm. Her nasılsa her şey çok kolay görünüyor. Yürütme yöntemi okuyucu ve yazar akışı nesneleriyle çalışıyor, ancak ana yöntemde dizelerle çalışıyoruz.

"Her şey gerçekten bu kadar basit mi?"

"Evet. Bir String'i Reader'a dönüştürmek için şunu yazmanız yeterli:"

Bir Dizeden Okuyucu Oluşturma
String s = "data";
Reader reader = new StringReader(s);

"Ve bir StringWriter'ı bir String'e dönüştürmek daha da kolay:"

Bir Yazardan Bir Dizi Almak
Writer writer = new StringWriter();
/* Here we write a bunch of data to the writer */
String result = writer.toString();

"Bence bunlar mükemmel dersler. Bana onlardan bahsettiğin için teşekkürler Ellie."