"आम्ही फाईल इनपुट/आउटपुटसाठी प्रवाहांसह प्रारंभ करू. परंतु प्रथम गोष्टी प्रथम."

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

पद्धत पद्धत काय करते
FileInputStream(String fileName);
- हा कन्स्ट्रक्टर आहे. हे आपल्याला डिस्कवरील फाइलचे नाव निर्दिष्ट करू देते, ज्यामधून तयार केलेली ऑब्जेक्ट डेटा वाचेल.
int read();
— ही पद्धत फाईलमधील एक बाइट वाचते आणि परत करते. रिटर्न व्हॅल्यू इंटमध्ये रुंद केले जाते.
int available();
— ही पद्धत न वाचलेल्या (उपलब्ध) बाइट्सची संख्या परत करते.
void close();
- ही पद्धत प्रवाह "बंद" करते. तुम्ही स्ट्रीमसह काम पूर्ण केल्यावर तुम्ही याला कॉल करता.
ऑब्जेक्ट नंतर फाईल बंद करण्यासाठी आवश्यक असलेली हाउसकीपिंग ऑपरेशन्स इ. करते.
या टप्प्यावर, तुम्ही प्रवाहातील कोणताही डेटा वाचू शकत नाही.

फक्त गंमत म्हणून, फाईलमधील सर्व बाइट्सची बेरीज करूया. कोड कसा दिसतो ते येथे आहे:

फाईलमधील सर्व बाइट्सची बेरीज करा
public static void main(String[] args) throws Exception
{
 //Create a FileInputStream object bound to «c:/data.txt».
 FileInputStream inputStream = new FileInputStream("c:/data.txt");
 long sum = 0;

 while (inputStream.available() > 0) //as long as there are unread bytes
 {
  int data = inputStream.read(); //Read the next byte
  sum +=  data; //Add it to the running total
 }
 inputStream.close(); // Close the stream

 System.out.println(sum); // Display the sum on the screen.
}

"आम्ही यासारखे काहीतरी आधीच पाहिले आहे. FileOutputStream कसे आयोजित केले जाते?"

"ठीक आहे. हे पहा:"

पद्धत पद्धत काय करते
FileOutputStream (String fileName);
"हा कन्स्ट्रक्टर आहे. ते तुम्हाला डिस्कवरील फाइलचे नाव निर्दिष्ट करू देते, ज्यावर तयार केलेली ऑब्जेक्ट डेटा लिहितो."
void write(int data);
"ही पद्धत पुढील बाइट लिहिते, डेटा एका बाइटवर कापून."
void flush();
"लिहिला जाणारा डेटा बहुतेकदा मेमरीमध्ये मोठ्या ब्लॉक्समध्ये गोळा केला जातो आणि नंतर फक्त डिस्कवर लिहिला जातो."

फ्लश कमांड सर्व जतन न केलेली माहिती डिस्कवर लिहिण्यास भाग पाडते.

void close();
"ही पद्धत स्ट्रीम «बंद» करते. जेव्हा तुम्ही स्ट्रीमसोबत काम करता तेव्हा तुम्ही याला कॉल करता."
ऑब्जेक्ट नंतर फाईल बंद करण्यासाठी आवश्यक हाउसकीपिंग ऑपरेशन्स इ.

तुम्ही यापुढे स्ट्रीमवर डेटा लिहू शकत नाही आणि फ्लश आपोआप कॉल केला जाईल.

"बस एवढेच?"

"होय, लिहिण्याची एकच पद्धत आहे: write(). ते एका वेळी फक्त एक बाइट लिहिते. पण ते तुम्हाला फाइलवर हवी तेवढी माहिती लिहू देते."

प्रोग्रामिंग ही एक मोठी आणि गुंतागुंतीची कार्ये अनेक लहान कार्यांमध्ये विभागण्याची प्रक्रिया आहे. मूलत: तीच प्रक्रिया येथे घडत आहे: डेटाचे मोठे ब्लॉक वाचणे आणि लिहिणे हे वाचन आणि चाव्याच्या आकाराच्या तुकड्यांमध्ये - एका वेळी एक बाइटमध्ये मोडले जाते.

डिस्कवरील फाइल कॉपी करण्यासाठी तुम्ही हे वर्ग कसे वापरू शकता ते येथे आहे:

डिस्कवर फाइल कॉपी करा
public static void main(String[] args) throws Exception
{
 //Create a stream to read bytes from a file
 FileInputStream inputStream = new FileInputStream("c:/data.txt");
 //Create a stream to write bytes to a file
 FileOutputStream outputStream = new FileOutputStream("c:/result.txt");

 while (inputStream.available() > 0) //as long as there are unread bytes
 {
  int data = inputStream.read(); // Read the next byte into the data variable
  outputStream.write(data); // and write it to the second stream
 }

 inputStream.close(); //Close both streams. We don't need them any more.
 outputStream.close();
}

"धन्यवाद, ऋषी. हा कोड प्रत्यक्षात कसा काम करतो हे मला शेवटी समजले."