“สวัสดี อามีโก้!”
“สวัสดี เอลลี่!”
"วันนี้ฉันอยากจะบอกคุณเกี่ยวกับ คลาส StringReaderและStringWriterโดยหลักการแล้วจะไม่มีอะไรใหม่สำหรับคุณมากนัก แต่บางครั้งคลาสเหล่านี้ก็มีประโยชน์มาก แต่อย่างน้อยที่สุด ฉันต้องการให้คุณรู้ว่า ว่ามีอยู่จริง"
"คลาสเหล่านี้เป็นการใช้งานที่ง่ายที่สุดของคลาส Reader และ Writer ที่เป็นนามธรรม และโดยทั่วไปจะคล้ายกับ FileReader และ FileWriter อย่างไรก็ตาม คลาสเหล่านี้ไม่ทำงานกับข้อมูลในไฟล์บนดิสก์ ต่างจากคลาสเหล่านั้น แต่จะทำงานกับสตริง ในความทรงจำของ JVM"
"ทำไมเราถึงต้องการชั้นเรียนดังกล่าว"
"บางครั้งก็จำเป็น โดยพื้นฐานแล้วStringReaderเป็นอะแดปเตอร์ระหว่าง คลาส StringและReaderและStringWriterเป็นสตริงที่สืบทอดWriterใช่... ฉันสามารถบอกได้ว่านั่นไม่ใช่คำอธิบายที่ดีที่สุด จะเป็นการดีกว่าหากดูที่สองสามข้อ ของตัวอย่างก่อน"
"ตัวอย่างเช่น สมมติว่าคุณต้องการทดสอบเมธอดของคุณ ซึ่งอ่านข้อมูลจากออบเจกต์ 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);
}
}
"กล่าวอีกนัยหนึ่งคือ เราเพียงแค่นำ String มาพันไว้ใน StringReader แล้วส่งต่อสิ่งนั้นแทน Reader วัตถุ? และทุกอย่างจะถูกอ่านจากมันอย่างที่เราต้องการหรือไม่"
"ใช่ อืม มีประเด็นนี้ ตอนนี้เรามาทดสอบวิธีการของ StringWriter ในการทำเช่นนี้ เราจะทำให้ตัวอย่างซับซ้อนขึ้น ตอนนี้จะไม่เพียงแค่อ่านบรรทัดและแสดงบนหน้าจอแทน มันจะย้อนกลับและส่งออกไปยังอ็อบเจกต์ตัวเขียน ตัวอย่างเช่น:"
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);
}
}
"เราสร้าง ออบเจกต์ StringWriterที่มีสตริงที่เก็บทุกอย่างที่เขียนถึงตัวเขียน นี้ และเพื่อให้ได้มา คุณต้องเรียกใช้ เมธอด toString ()"
"อืม ยังไงซะมันก็ดูง่ายเกินไป วิธีการดำเนินการนั้นทำงานร่วมกับออบเจกต์ สตรีมของ ผู้อ่านและผู้เขียนแต่เรากำลังทำงานกับสตริงในวิธีการหลัก
"มันง่ายขนาดนั้นเลยเหรอ?"
"อ๋อ หากต้องการแปลงสตริงเป็นReaderให้เขียนสิ่งนี้:"
String s = "data";
Reader reader = new StringReader(s);
"และการแปลง StringWriter เป็น String นั้นง่ายยิ่งกว่า:"
Writer writer = new StringWriter();
/* Here we write a bunch of data to the writer */
String result = writer.toString();
"นี่เป็นชั้นเรียนที่ยอดเยี่ยมในความคิดของฉัน ขอบคุณที่บอกฉันเกี่ยวกับพวกเขา Ellie"
GO TO FULL VERSION