यह स्पष्ट लग सकता है, लेकिन PrintStream
एक प्रिंट करता है OutputStream
, और PrintWriter
एक प्रिंट करता है Writer
। ठीक है, मुझे संदेह है कि मुझे स्पष्ट बताने के लिए कोई अंक मिलेगा। लेकिन वहाँ अधिक है।
तो, OutputStream
a और a के बीच क्या अंतर है Writer
? दोनों धाराएँ हैं, प्राथमिक अंतर के साथ OutputStream
एक बाइट्स की एक धारा है, जबकि एक Writer
वर्णों की एक धारा है।
यदि OutputStream
बाइट्स के साथ एक सौदा होता है, तो क्या होगा PrintStream.print(String)
? यह डिफ़ॉल्ट प्लेटफ़ॉर्म एन्कोडिंग का उपयोग करके बाइट्स को बाइट्स में परिवर्तित करता है। डिफ़ॉल्ट एन्कोडिंग का उपयोग करना आम तौर पर एक बुरी बात है क्योंकि यह एक प्लेटफॉर्म से दूसरे प्लेटफॉर्म पर जाते समय बग पैदा कर सकता है, खासकर यदि आप एक प्लेटफॉर्म पर फाइल उत्पन्न कर रहे हैं और दूसरे पर इसका उपभोग कर रहे हैं।
के साथ Writer
, आप आमतौर पर किसी भी प्लेटफ़ॉर्म निर्भरता से बचने के लिए एन्कोडिंग का उपयोग करने के लिए निर्दिष्ट करते हैं।
PrintStream
JDK में परेशान होने की बात क्यों , क्योंकि प्राथमिक इरादा पात्रों को लिखना है, और बाइट्स नहीं? PrintStream
जेडीके 1.1 से पहले जब रीडर / राइटर कैरेक्टर स्ट्रीम पेश किए गए थे। मैं कल्पना करता हूं कि PrintStream
अगर इस तथ्य का व्यापक रूप से उपयोग किया जाता है तो केवल सूर्य ही वंचित होता । (सब के बाद, आप नहीं प्रत्येक कॉल करने के लिए चाहते हो जाएगा System.out
एक बहिष्कृत API चेतावनी उत्पन्न करने के लिए! इसके अलावा, से प्रकार बदलने PrintStream
के लिए PrintWriter
मानक आउटपुट धाराओं मौजूदा अनुप्रयोगों भंग हो जाए पर।)