1. OutputStream
वर्ग
आम्ही नुकतेच इनपुट प्रवाह एक्सप्लोर केले. आउटपुट प्रवाहांबद्दल बोलण्याची वेळ आली आहे.
वर्ग OutputStream
हा सर्व वर्गांसाठी पालक वर्ग आहे जो बाइट आउटपुटला समर्थन देतो. हा एक अमूर्त वर्ग आहे जो स्वतः काहीही करत नाही, परंतु प्रत्येक प्रसंगासाठी त्याचे वंशज वर्ग आहेत.
हे अत्यंत क्लिष्ट वाटते. अधिक सोप्या भाषेत सांगायचे तर, हा वर्ग बाइट्सवर चालतो, उदाहरणार्थ, वर्ण किंवा इतर डेटा प्रकारांवर नाही. आणि हे अमूर्त आहे याचा अर्थ असा आहे की आपण सहसा ते वापरत नाही, तर त्याच्या वंशजांपैकी एक आहे. उदाहरणार्थ, FileOutputStream
आणि सारखे.
पण परत वर्गात OutputStream
. या वर्गात अशा पद्धती आहेत ज्या त्याच्या सर्व वंशजांनी अंमलात आणल्या पाहिजेत. येथे मुख्य आहेत:
पद्धती | वर्णन |
---|---|
|
int प्रवाहावर एक बाइट (नाही) लिहितो . |
|
प्रवाहावर बाइट्सचा अॅरे लिहितो |
|
प्रवाहावर बाइट्सच्या अॅरेचा भाग लिहितो |
|
बफरमध्ये संचयित केलेला सर्व डेटा प्रवाहावर लिहितो |
|
प्रवाह बंद करतो |
जेव्हा तुम्ही वारसा मिळालेल्या वर्गाचा ऑब्जेक्ट तयार करता InputStream
, तेव्हा तुम्ही सामान्यतः स्रोत ऑब्जेक्ट निर्दिष्ट करता ज्यावरून InputStream
डेटा वाचतो. जेव्हा तुम्ही वारसा मिळालेल्या वर्गाचा ऑब्जेक्ट तयार करता OutputStream
, तेव्हा तुम्ही सामान्यतः लक्ष्य ऑब्जेक्ट किंवा स्ट्रीम देखील निर्दिष्ट करता ज्यावर डेटा लिहिला जाईल.
चला वर्गाच्या सर्व पद्धती थोडक्यात पाहू OutputStream
:
write(int b)
पद्धत
int
ही पद्धत आउटपुट प्रवाहावर एक बाइट (नाही) लिहिते . पास केलेले मूल्य बाइटवर टाकले जाते आणि int चे पहिले तीन बाइट टाकून दिले जातात.
write(byte[] buffer)
पद्धत
आउटपुट प्रवाहात बाइट्सचा दिलेला अॅरे लिहितो. बस एवढेच.
write(byte[] buffer, int offset, int length)
पद्धत
आउटपुट प्रवाहात पास केलेल्या बाइट्सच्या अॅरेचा एक भाग लिहितो. ऑफसेट व्हेरिएबल अॅरेच्या पहिल्या घटकाची अनुक्रमणिका दर्शविते आणि length
लिहिल्या जाणार्या उपसेटची लांबी आहे.
flush()
पद्धत
flush()
सध्याच्या प्रवाहात संभाव्य बफर केलेला कोणताही डेटा लक्ष्य प्रवाहावर लिहिण्यास भाग पाडण्यासाठी पद्धत वापरली जाते . बफरिंग आणि/किंवा साखळीमध्ये व्यवस्था केलेल्या एकाधिक प्रवाह वस्तू वापरताना हे संबंधित आहे.
close()
पद्धत
लक्ष्य ऑब्जेक्टवर कोणताही अलिखित डेटा लिहितो. close()
तुम्ही ब्लॉक वापरल्यास पद्धत कॉल करण्याची गरज नाही try-with-resources
.
फाइल कॉपी करण्याचे उदाहरण
कोड | नोंद |
---|---|
|
InputStream फाइलमधून वाचण्यासाठी OutputStream फाईल बफरवर लिहा ज्यामध्ये आम्ही डेटा वाचू जोपर्यंत स्ट्रीममध्ये डेटा आहे तोपर्यंत बफरमध्ये डेटा वाचा बफरमधून दुसऱ्या प्रवाहात डेटा लिहा |
2. Writer
वर्ग
वर्ग Writer
अगदी वर्गासारखाच आहे OutputStream
, परंतु पुन्हा एकदा फक्त एक फरक: तो char
बाइट्सऐवजी ( ) वर्णांसह कार्य करतो.
हा एक अमूर्त वर्ग आहे: तुम्ही वर्गाच्या वस्तू तयार करू शकत नाही Writer
. शेकडो वंशज वर्गांसाठी एक सामान्य पालक वर्ग असणे आणि त्यांना वर्ण प्रवाहांसह कार्य करण्यासाठी सामान्य पद्धती देणे हे त्याचे मुख्य ध्येय आहे.
वर्गाच्या पद्धती Writer
(आणि त्याचे सर्व वंशज वर्ग):
पद्धती | वर्णन |
---|---|
|
int प्रवाहावर एक वर्ण (नाही) लिहितो . |
|
प्रवाहावर वर्णांचा अॅरे लिहितो |
|
प्रवाहात वर्णांच्या अॅरेचा भाग लिहितो |
|
प्रवाहाला स्ट्रिंग लिहितो |
|
प्रवाहावर स्ट्रिंगचा भाग लिहितो |
|
बफरमध्ये संचयित केलेला सर्व डेटा प्रवाहावर लिहितो |
|
प्रवाह बंद करतो |
पद्धती वर्गाच्या पद्धतींसारख्याच आहेत OutputStream
, परंतु त्या बाइट्सऐवजी वर्णांसह कार्य करतात.
पद्धतींचे वर्णन:
write(int b)
पद्धत
ही पद्धत आउटपुट स्ट्रीमवर एकच वर्ण ( char
— नाही ) लिहिते. int
पास केलेले मूल्य a वर टाकले जाते char
आणि पहिले दोन बाइट टाकून दिले जातात.
write(char[] buffer)
पद्धत
आउटपुट प्रवाहात वर्णांचा दिलेला अॅरे लिहितो.
write(char[] buffer, int offset, int length)
पद्धत
आउटपुट स्ट्रीममध्ये पास केलेल्या वर्णांच्या अॅरेचा एक भाग लिहितो. व्हेरिएबल offset
अॅरेच्या पहिल्या घटकाची अनुक्रमणिका दर्शवते आणि length
लिहिल्या जाणार्या उपसंचाची लांबी आहे.
write(String str)
पद्धत
दिलेली स्ट्रिंग आउटपुट स्ट्रीमवर लिहिते.
write(String str, int offset, int length)
पद्धत
दिलेल्या स्ट्रिंगचा एक भाग आउटपुट स्ट्रीमवर लिहितो: स्ट्रिंग अक्षरांच्या अॅरेमध्ये रूपांतरित होते. व्हेरिएबल offset
अॅरेच्या पहिल्या घटकाची अनुक्रमणिका दर्शवते आणि length
लिहिल्या जाणार्या उपसंचाची लांबी आहे.
flush()
पद्धत
flush()
सध्याच्या प्रवाहात संभाव्य बफर केलेला कोणताही डेटा लक्ष्य प्रवाहावर लिहिण्यास भाग पाडण्यासाठी पद्धत वापरली जाते . बफरिंग आणि/किंवा साखळीमध्ये व्यवस्था केलेल्या एकाधिक प्रवाह वस्तू वापरताना हे संबंधित आहे.
close()
पद्धत
लक्ष्य ऑब्जेक्टवर कोणताही अलिखित डेटा लिहितो. close()
तुम्ही ब्लॉक वापरल्यास पद्धत कॉल करण्याची गरज नाही try-with-resources
.
मजकूर फाइल कॉपी करणाऱ्या प्रोग्रामचे उदाहरण:
कोड | नोंद |
---|---|
|
Reader फाइलमधून वाचण्यासाठी Writer फाईल बफरवर लिहिण्यासाठी ज्यामध्ये आम्ही डेटा वाचू जोपर्यंत स्ट्रीममध्ये डेटा आहे तोपर्यंत बफरमध्ये डेटा वाचा बफरमधून दुसऱ्या प्रवाहावर डेटा लिहा |
StringWriter
वर्ग
आणखी एक मनोरंजक वर्ग आहे जो Writer
वर्गाचा वारसा घेतो: त्याला म्हणतात StringWriter
. त्यात एक परिवर्तनीय स्ट्रिंग आहे - एक StringBuffer
ऑब्जेक्ट. आणि प्रत्येक वेळी जेव्हा तुम्ही ऑब्जेक्टवर काहीतरी "लिहता" StringWriter
तेव्हा मजकूर त्याच्या अंतर्गत बफरमध्ये जोडला जातो.
उदाहरण:
कोड | नोंद |
---|---|
|
टार्गेट कॅरेक्टर स्ट्रीम ( StringWriter ) तयार केला जातो एक स्ट्रिंग बफरला लिहिलेली असते StringWriter A स्ट्रिंगच्या आतील बफरवर एक स्ट्रिंग लिहीली जाते StringWriter ऑब्जेक्टची सामग्री एका स्ट्रिंगमध्ये रूपांतरित करणे |
या प्रकरणात, StringWriter
वर्ग मूलत: वर्गावर एक आवरण आहे StringBuffer
, परंतु StringWriter
वर्ग हा प्रवाह वर्गाचा वंशज आहे Writer
आणि तो प्रवाह वस्तूंच्या साखळ्यांमध्ये वापरला जाऊ शकतो. सराव मध्ये ही एक अतिशय उपयुक्त मालमत्ता आहे.
GO TO FULL VERSION