"हॅलो, अमिगो! काल ऋषीने तुम्हाला FileInputStream आणि FileOutputStream बद्दल सांगितले . आणि आज मी तुम्हाला FileReader आणि FileWriter क्लासेसबद्दल सांगेन ."

जसे आपण आधीच अंदाज लावला आहे, हे सर्व वर्ग फाईल ऑब्जेक्ट आणि इनपुटस्ट्रीम , आउटपुटस्ट्रीम , रीडर आणि लेखक «इंटरफेस» मधील अडॅप्टर आहेत.

"ते फाईल आणि रीडर/राइटरमधील अडॅप्टर्ससारखे आहेत, परंतु तुम्हाला फक्त स्ट्रिंग ऑब्जेक्ट कन्स्ट्रक्टरला पास करणे आवश्यक आहे, फाइल नाही!"

"वास्तविक, त्यांच्याकडे अनेक कन्स्ट्रक्टर आहेत. फाइल आणि स्ट्रिंग ऑब्जेक्ट्स दोन्हीसाठी कन्स्ट्रक्टर आहेत. जर तुम्ही कन्स्ट्रक्टरला स्ट्रिंग ऑब्जेक्ट पास केले, तर कन्स्ट्रक्टर पास केलेल्या स्ट्रिंग ऑब्जेक्टमधून घेतलेल्या फाईल पाथचा वापर करून शांतपणे एक फाइल ऑब्जेक्ट तयार करेल."

हे सोयीसाठी आहे. Java च्या निर्मात्यांनी या वर्गांसाठी सर्वाधिक वारंवार वापरल्या जाणार्‍या केसेस घेतल्या आणि त्या सर्वांसाठी कंस्ट्रक्टर लिहिले. ते खूपच सोयीस्कर आहे, तुम्हाला वाटत नाही का?

"अरे, होय. सोयीस्कर. मी सहमत आहे. पण मग मला सतत का लिहावे लागते:"
बफरेडरीडर बफरेडरीडर = नवीन बफरेडरीडर(नवीन इनपुटस्ट्रीमरीडर(सिस्टम.इन));
"त्यांनी हे वापर प्रकरण का जोडले नाही?"

"येथे मुद्दा असा आहे की एक   सामान्य Java प्रोग्राम कन्सोलसह कार्य करत नाही. खरं तर, तुम्ही जवळजवळ कधीच त्यातून काहीही वाचत नाही. अगदी वेब सर्व्हर, ऍप्लिकेशन सर्व्हर किंवा इतर काही क्लिष्ट प्रणालीसह देखील."

परंतु आमच्याकडे कन्सोलमध्ये डेटा आणि मजकूर आउटपुट करण्यासाठी प्रिंटस्ट्रीम आहे. कारण हे «सर्व्हर अॅप्लिकेशन्स» अनेकदा त्यांची स्थिती, त्रुटी आणि इतर सर्व प्रकारची माहिती प्रदर्शित करण्यासाठी कन्सोलचा वापर करतात.

"समजले. आणि तुम्ही FileReader आणि FileWriter वापरून फाइल कॉपी देखील करू शकता?"

"होय, जर ती मजकूर फाइल असेल (म्हणजे त्यात अक्षरांचा समावेश असेल). येथे एक उदाहरण आहे:"

डिस्कवर फाइल कॉपी करा
public static void main(String[] args) throws Exception
{
 FileReader reader = new FileReader("c:/data.txt");
 FileWriter writer = new FileWriter("c:/result.txt");

 while (reader.ready()) //as long as there are unread bytes in the input stream
 {
  int data = reader.read(); //Read one character (the char will be widened to an int)
  writer.write(data); //Write one character (the int will be truncated/narrowed to a char)
 }

 //Close the streams after we done using them
 reader.close();
 writer.close();
}

"जवळजवळ कोणतेही मतभेद नाहीत."

"हो, फरक कमी आहेत."