"สวัสดี อามีโก้ อีกครั้ง"
“สวัสดีค่ะคุณฤๅษี วันนี้เรียนเรื่องอะไรคะ”
"วันนี้ฉันจะบอกคุณเกี่ยวกับ 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());
"อืม สั้นกว่านี้ และวันนี้คุณบอกฉันเกี่ยวกับวิธีการทั้งหมดนี้ ฉันจะทำมันใหม่ ขอบคุณสำหรับบทเรียน ริชิ"
"โชคดี อามีโก้"
GO TO FULL VERSION