"Halo, Amigo!"

"Halo, Ellie!"

"Dina iki aku arep nyritakake babagan kelas StringReader lan StringWriter . Ing asas, ora bakal akeh sing anyar kanggo sampeyan, nanging kadhangkala kelas kasebut migunani banget. Nanging, paling ora, aku pengin sampeyan ngerti. sing padha ana."

"Kelas iki minangka implementasi paling gampang saka kelas Reader lan Writer abstrak. Lan padha Sejatine padha FileReader lan FileWriter. Nanging, ora kaya sing, iki ora bisa digunakake karo data ing file ing disk. Nanging, padha bisa digunakake karo String. ing memori JVM."

"Kenapa kita kudu kelas kaya ngono?"

"Kadhangkala padha dibutuhake. Intine, StringReader minangka adaptor antarane kelas String lan Reader . Lan StringWriter minangka String sing dadi warisan Writer . Ya ... Aku bisa ngomong yen iki dudu panjelasan sing paling apik. contone dhisik."

"Contone, umpamane sampeyan pengin nyoba metode sampeyan, sing maca data saka obyek Reader sing diterusake. Kita bisa nindakake kaya iki:"

Maca saka obyek Reader:
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);
 }
}

"Ing tembung liyane, kita mung njupuk String, kebungkus ing StringReader, lan banjur liwati tinimbang obyek Reader? Lan kabeh bakal diwaca saka kaya kita perlu?"

"Ya. Hmm. Lan ana titik kanggo iki. Saiki ayo nyoba metode StringWriter. Kanggo nindakake iki, kita bakal nggawe conto luwih rumit. Saiki ora mung maca garis lan nampilake ing layar, nanging iku bakal mbalikke lan output menyang obyek writer. Contone:"

Maca saka obyek maca lan nulis menyang obyek panulis:
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);
 }
}

"We digawe obyek StringWriter sing ngemot senar sing nyimpen kabeh ditulis kanggo penulis iki . Lan kanggo njaluk iku, sampeyan mung kudu nelpon toString () cara."

"Hmm. Piye wae, kabeh katon gampang banget. Cara eksekutor bisa digunakake karo obyek stream pembaca lan panulis , nanging kita nggarap senar ing metode utama.

"Apa kabeh pancen prasaja?"

"Ya. Kanggo ngowahi String dadi Pembaca , tulisen iki:"

Nggawe Pembaca saka String
String s = "data";
Reader reader = new StringReader(s);

"Lan ngowahi StringWriter dadi String luwih gampang:"

Njupuk String saka Writer
Writer writer = new StringWriter();
/* Here we write a bunch of data to the writer */
String result = writer.toString();

"Iki kelas sing apik banget, miturut pendapatku. Matur nuwun kanggo nyritakake babagan iki, Ellie."