"สวัสดี อามีโก้ อีกครั้ง"

“สวัสดีค่ะคุณฤๅษี วันนี้เรียนเรื่องอะไรคะ”

"วันนี้ฉันจะบอกคุณเกี่ยวกับ Reader and Writer"

"แต่ Rishi ฉันรู้เกือบทุกอย่างเกี่ยวกับพวกเขาแล้ว!"

"การทำซ้ำคือแม่ของการเรียนรู้"

"อืม โอเค"

" Reader and Writerเป็นแบบแอนะล็อกของInputStreamและOutputStreamแต่ทำงานกับอักขระ ไม่ใช่ไบต์ บางครั้งเรียกอีกอย่างว่า character streams ตรงข้ามกับ  InputStream  และ  OutputStreamซึ่งเรียกว่า byte streams"

"อันหนึ่งสำหรับอักขระ อีกอันสำหรับไบต์ ฉันจำได้"

"ไม่ใช่แค่นั้น คลาสเหล่านี้ได้รับการออกแบบมาเป็นพิเศษเพื่อทำงานกับข้อความและสตริง วันนี้เราจะมาดูการใช้งานคลาสสิกสองแบบของคลาสนามธรรมเหล่านี้: FileReaderและFileWriter "

"นี่คือวิธีการของ คลาส FileReader :"

วิธี คำอธิบาย
int read() อ่านอักขระหนึ่งตัวจากสตรีมและส่งกลับ
int read(char cbuf[], int offset, int length) อ่านอาร์เรย์ของอักขระ ส่งกลับจำนวนอักขระที่อ่าน
boolean ready() คืนค่าจริงหากสามารถอ่านจากสตรีมได้
void close() ปิดสตรีมอินพุต
int read(java.nio.CharBuffer target) อ่านชุดอักขระลงในบัฟเฟอร์
int read(char cbuf[]) อ่านอาร์เรย์ของอักขระ
long skip(long n) ข้าม n ตัวอักษรในสตรีม
String getEncoding() ส่งกลับการเข้ารหัสปัจจุบันของสตรีม

"อืม ฉันรู้เรื่องนี้เกือบทั้งหมดแล้ว แล้ว FileWriter ล่ะ?"

วิธี คำอธิบาย
void write(int c) เขียนอักขระหนึ่งตัวลงในสตรีม
void write(char cbuf[], int off, int len) เขียนอาร์เรย์ของอักขระไปยังสตรีม
void write(char cbuf[]) เขียนอาร์เรย์ของอักขระไปยังสตรีม
void write(String str, int off, int len) เขียนส่วนหนึ่งของสตริงไปยังสตรีม
void write(String str) เขียนสตริงไปยังสตรีม
void flush() เขียนทุกอย่างที่แคชไว้ในหน่วยความจำลงดิสก์
void close() ปิดสตรีม
String getEncoding() ส่งกลับการเข้ารหัสปัจจุบันของสตรีม

"ฉันรู้แล้ว!"

"เยี่ยมมาก ถ้าอย่างนั้นเรามาดูตัวอย่างที่น่าสนใจสักตัวอย่างหนึ่ง แล้วต่อมา ดิเอโกจะมอบงานให้คุณมากขึ้น"

"คุณอ่านไฟล์ทีละบรรทัดได้อย่างไร คุณเขียนโค้ดได้ไหม"

"ง่าย ดู:"

รหัส
// 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();

"อืม ไม่เลว"

"ไม่เลว? ทุกอย่างเรียบง่ายและสวยงาม ยอมรับเถอะ Rishi—ฉันมีความเชี่ยวชาญในเธรด I/O ที่ยอดเยี่ยมอยู่แล้ว ดังนั้น มีอะไรควรปรับปรุงที่นี่บ้าง"

"เช่น คุณสามารถทำได้:"

รหัสของฤๅษี
File file = new File("c:/document.txt");

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

"อืม สั้นกว่านี้ และวันนี้คุณบอกฉันเกี่ยวกับวิธีการทั้งหมดนี้ ฉันจะทำมันใหม่ ขอบคุณสำหรับบทเรียน ริชิ"

"โชคดี อามีโก้"