"สวัสดี Amigo! คุณใช้ คลาส BufferedReaderและInputStreamReaderมานานแล้ว ทีนี้มาสำรวจกันดีกว่าว่าจริงๆแล้วมันทำอะไรได้บ้าง"

คลาส InputStreamReader เป็นอะแด็ปเตอร์แบบคลาสสิกจากอินเท อร์เฟซ InputStreamไปยังอินเทอร์เฟซReader ไม่มีอะไรจะเพิ่มที่นี่เช่นกัน

แต่ในระยะสั้น นี่คือสิ่งที่เกิดขึ้น เมื่อคุณร้องขอ (อ่าน) อักขระตัวถัดไปจาก ออบเจกต์ InputStreamReaderตัวอักขระจะอ่านสองสามไบต์จากInputStreamที่ส่งผ่านไปยังตัวสร้าง และส่งกลับเป็นอักขระหนึ่งตัว

แต่ Reader ไม่ใช่วัตถุที่สะดวกที่สุดในการทำงาน บ่อยครั้งสิ่งที่เราต้องการไม่ใช่การอ่านอักขระทั้งหมดที่ผู้ใช้ป้อนทั้งหมดในคราวเดียว แต่ควรแยกอักขระเหล่านี้ออกเป็นบรรทัด

"แต่คลาส Reader มี เมธอด read (CharBuffer) เราใช้แบบนั้นไม่ได้เหรอ"

"เมธอดนี้อ่านข้อมูลเป็นก้อนขนาดบัฟเฟอร์และวางไว้ในวัตถุ CharBuffer"

ข้อความมักจะแบ่งออกเป็นบรรทัด ดังนั้นเมธอด read(CharBuffer s) อาจอ่านหลายบรรทัดพร้อมกัน หากเราต้องการอ่านข้อความจนสุดบรรทัด (เช่น อักขระทั้งหมดในบรรทัดจนถึงอักขระขึ้นบรรทัดใหม่) จะเป็นการดีกว่าหากมองหาอย่างอื่น และมีวิธีอื่นอยู่ ในคลาสBufferedReader

คลาสBufferedReader ซึ่งเป็น โครงสร้างที่สะดวกเหนือ Reader มีวิธีที่สะดวกวิธีหนึ่ง: readLine() วิธีนี้ช่วยให้เราอ่านข้อความทั้งบรรทัดจาก Reader ได้ในครั้งเดียว เมื่อคุณเรียกใช้ readLine ในรหัสของคุณ โปรแกรมจะอ่านอักขระจากออบเจกต์ Reader จนกว่าจะพบอักขระขึ้นบรรทัดใหม่ เมื่อพบอักขระขึ้นบรรทัดใหม่ เมธอดจะรวมอักขระเหล่านี้เข้าด้วยกันในสตริงเดียวแล้วส่งคืน

"ฉันใช้มันเป็นประจำ แต่ฉันไม่รู้ว่ามันทำงานอย่างไร ตอนนี้ฉันรู้แล้ว ขอบคุณ คิม"