"हाय, अमिगो, पुन्हा एकदा."

"हॅलो टू ऋषी. आजचा धडा काय असेल?"

"आज मी तुम्हाला वाचक आणि लेखकाबद्दल सांगणार आहे."

"पण, ऋषी, मला त्यांच्याबद्दल जवळजवळ सर्व काही आधीच माहित आहे!"

"पुनरावृत्ती ही शिकण्याची जननी आहे."

"हम्म. ठीक आहे."

" वाचक आणि लेखक हे इनपुटस्ट्रीम आणि आउटपुटस्ट्रीमचे अॅनालॉग आहेत , परंतु ते बाइट्ससह नव्हे तर वर्णांसह कार्य करतात. काहीवेळा त्यांना इनपुटस्ट्रीम  आणि  आउटपुटस्ट्रीमच्या विरूद्ध कॅरेक्टर स्ट्रीम देखील म्हणतात,  ज्याला बाइट स्ट्रीम म्हणतात."

"एक पात्रांसाठी आहे, तर दुसरा बाइट्ससाठी आहे. मला आठवते."

"फक्त एवढेच नाही. हे वर्ग विशेषतः मजकूर आणि स्ट्रिंगसह कार्य करण्यासाठी डिझाइन केलेले आहेत. आज आपण या अमूर्त वर्गांची दोन उत्कृष्ट अंमलबजावणी पाहू: FileReader आणि FileWriter ."

" फाइलरीडर वर्गाच्या पद्धती येथे आहेत :"

पद्धत वर्णन
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) प्रवाहातील वर्ण वगळते.
String getEncoding() प्रवाहाचे वर्तमान एन्कोडिंग मिळवते.

"बरं, मला हे जवळपास सगळं माहीत आहे. पण फाइलराइटरचं काय?"

पद्धत वर्णन
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();

"हम्म. वाईट नाही."

"वाईट नाही? हे सर्व साधे आणि सुंदर आहे. कबूल करा, ऋषी-माझ्याकडे आधीपासूनच I/O थ्रेड्सवर उत्कृष्ट प्रभुत्व आहे. मग इथे काय सुधारणा करता येईल?"

"बरं, उदाहरणार्थ, तुम्ही हे करू शकता:"

ऋषीची संहिता
File file = new File("c:/document.txt");

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

"हम्म. ते लहान आहे. आणि आजच तू मला या सर्व पद्धतींबद्दल सांगितलेस. मी ते पुन्हा तयार करेन. धड्याबद्दल धन्यवाद, ऋषी."

"शुभेच्छा, अमिगो."