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