2011-03-07 12 views
19

मैं एक पुस्तकालय तैयार कर रहा हूं जहां एक कक्षा में आंतरिक रूप से पाठ को आंतरिक रूप से परिवर्तित करने में सक्षम होने की क्षमता होनी चाहिए। मैं किस वर्ग का उपयोग करूंगा: OutputStream या Writer? और उनके बीच महत्वपूर्ण अंतर क्या है (मेरे मामले में)?लेखक या आउटपुटस्ट्रीम?

public interface Memento { 
    void save(OutputStream stream); 
    void save(Writer writer); 
} 

कौन सा एक?

+2

लेखकों/पाठकों को चरित्र डेटा और स्ट्रीम के साथ सौदा बाइनरी डेटा के साथ सौदा करता है। – asgs

+0

@asgs एक साधारण वाक्य में मेरे संदेह को मंजूरी दे दी। धन्यवाद हाहा – CapturedTree

उत्तर

23

एक OutputStream एक बाइट-ओरिएंटेड स्ट्रीम है। आपके द्वारा लिखे गए किसी भी पाठ को कुछ एन्कोडिंग (आमतौर पर आईएसओ -885 9 -1 या यूटीएफ -8) का उपयोग करके बाइट्स के रूप में एन्कोड किया जाना चाहिए। एक Writer एक चरित्र-उन्मुख धारा है जो इसे लिखने के आधार पर वर्णों को आंतरिक रूप से बाइट्स के रूप में एन्कोड नहीं कर सकता है या नहीं।

संपादित को आप लाइब्रेरी को डिजाइन रहे हैं तो अगर आप एक OutputStream उन्मुख इंटरफेस प्रदान जो पाठ लिखे जाने की है करने के लिए, तुम सच में ग्राहक वर्गों प्रयोग की जाने वाली एन्कोडिंग नियंत्रित करने की क्षमता प्रदान करना चाहिए।

15

टेक्स्ट? Writer। यह पात्रों, सम्मान एन्कोडिंग को संभालने के लिए है।

स्ट्रीम/बाइट्स की सरणी? OutputStream। कच्चे बाइट्स पर काम करता है, इसमें वर्णों, एन्कोडिंग, स्ट्रिंग इत्यादि की कोई धारणा नहीं है

+0

और 'आउटपुटस्ट्रीमवाइटर' के बारे में क्या है? क्या यह बाइट को वर्णमाला में परिवर्तित करने के लिए प्रयोग किया जाता है? – UnKnown

+1

@UnKnown - एक 'आउटपुटस्ट्रीमवाइटर' एक 'राइटर' है जो' आउटपुटस्ट्रीम 'को गंतव्य के रूप में उपयोग करने के लिए होता है। टेक्स्ट लिखते समय, यह 'आउटपुटस्ट्रीमवाइटर' (या प्लेटफ़ॉर्म पर निर्भर डिफ़ॉल्ट डिफॉल्ट एन्कोडिंग) का निर्माण करते समय निर्दिष्ट एन्कोडिंग का उपयोग करके अक्षरों को बाइट्स में परिवर्तित कर देगा। बाइट्स को वर्णों में परिवर्तित करने के लिए, आप 'रीडर' का उपयोग करेंगे। –

संबंधित मुद्दे