"हाय, अमीगो, एक बार फिर।"

"आपको नमस्कार, ऋषि। आज का पाठ किस बारे में होगा?"

"आज मैं आपको Reader और Writer के बारे में बताने जा रहा हूँ।"

"लेकिन, ऋषि, मैं पहले से ही उनके बारे में लगभग सब कुछ जानता हूँ!"

"दोहराव सीखने की जननी है।"

"हम्म। ठीक है, ठीक है।"

" रीडर और राइटर InputStream और OutputStream के अनुरूप हैं , लेकिन वे वर्णों के साथ काम करते हैं, बाइट्स के साथ नहीं। कभी-कभी उन्हें InputStream  और  OutputStream के विपरीत कैरेक्टर स्ट्रीम भी कहा जाता है  , जिन्हें बाइट स्ट्रीम कहा जाता है।"

"एक पात्रों के लिए है, दूसरा बाइट्स के लिए है। मुझे याद है।"

"यह केवल इतना ही नहीं है। इन कक्षाओं को विशेष रूप से पाठ और स्ट्रिंग्स के साथ काम करने के लिए डिज़ाइन किया गया है। आज हम इन सार वर्गों के दो क्लासिक कार्यान्वयन देखेंगे: 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() स्ट्रीम की वर्तमान एन्कोडिंग लौटाता है।

"ठीक है, मैं लगभग यह सब जानता हूं। लेकिन फाइलराइटर के बारे में क्या?"

तरीका विवरण
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());

"हम्म। वह छोटा है। और आज ही आपने मुझे इन सभी तरीकों के बारे में बताया। मैं इस पर फिर से काम करूंगा। पाठ के लिए धन्यवाद, ऋषि।"

"गुड लक, अमीगो।"