2010-06-10 18 views
35

कृपया बाइट स्ट्रीम और कैरेक्टर स्ट्रीम फाइलों को समझाएं। वास्तव में इसका क्या अर्थ है, क्या माइक्रोसॉफ्ट वर्ड डॉक्यूमेंट बाइट उन्मुख या चरित्र उन्मुख है?बाइट स्ट्रीम और कैरेक्टर स्ट्रीम

धन्यवाद

+7

प्रिय डाउनवॉटर - कृपया लेखक को प्रोत्साहित करने के लिए प्रोत्साहित करें कि ** ** ** आपने डाउनवोट करने का फैसला क्यों किया है (व्यक्तिगत रूप से मुझे एक मजबूत कारण नहीं दिख रहा है) –

+2

नोटपैड में ओएस एमएस वर्ड दस्तावेज़ खोलें। क्या देखती है? कचरा जैसे जब आप नोटपैड में 'exe' खोलते हैं? यह तब बाइनरी डेटा होगा :) – BalusC

+0

मैं इस पोस्ट को वोट देता हूं क्योंकि पोस्ट से जो कुछ मैं देखता हूं वह बाइट स्ट्रीम और कैरेक्टर स्ट्रीम के बीच भ्रम है। नोटपैड का उपयोग कर सवाल को समझाने के लिए यह समझ में नहीं आता है। डाउनवॉटर मुझे बहुत अहंकारी लगता है। – Paul

उत्तर

46

एक स्ट्रीम अनुक्रमिक रूप से फ़ाइल तक पहुंचने का एक तरीका है। एक बाइट स्ट्रीम बाइट द्वारा फ़ाइल बाइट तक पहुंचता है। एक बाइट स्ट्रीम किसी भी प्रकार की फ़ाइल के लिए उपयुक्त है, हालांकि टेक्स्ट फ़ाइलों के लिए काफी उपयुक्त नहीं है। उदाहरण के लिए, यदि फ़ाइल यूनिकोड एन्कोडिंग का उपयोग कर रही है और एक वर्ण को दो बाइट्स के साथ दर्शाया गया है, तो बाइट स्ट्रीम इन्हें अलग से इलाज करेगी और आपको स्वयं रूपांतरण करना होगा।

एक वर्ण धारा चरित्र द्वारा फ़ाइल चरित्र को पढ़ेगी। ठीक से काम करने के लिए एक चरित्र धारा को फ़ाइल के एन्कोडिंग को दिया जाना चाहिए।

हालांकि माइक्रोसॉफ़्ट वर्ड डॉक्यूमेंट में टेक्स्ट होता है, लेकिन इसे एक चरित्र धारा के साथ एक्सेस नहीं किया जा सकता है (यह एक टेक्स्ट फाइल नहीं है)। इसे एक्सेस करने के लिए आपको एक बाइट स्ट्रीम का उपयोग करने की आवश्यकता है।

+0

धन्यवाद kgiannakakis, और .txt फ़ाइल के बारे में क्या? – JavaUser

+2

एक वर्ण स्ट्रीम एक .txt फ़ाइल पढ़ने के लिए उपयुक्त है। जैसा कि मैंने कहा था, आपको टेक्स्ट फ़ाइल के एन्कोडिंग को जानने की आवश्यकता है। – kgiannakakis

+0

मैं एक विंडोज ओएस – JavaUser

3

पढ़ें this। यह आपको बाइट्स और वर्णों के साथ-साथ अन्य उपयोगी सामानों के भार के बारे में बताता है

4

1. चरित्र उन्मुख डेटाटाइप से बंधे हैं। केवल स्ट्रिंग प्रकार या चरित्र प्रकार को इसके माध्यम से पढ़ा जा सकता है जबकि बाइट उन्मुख किसी भी डेटाटाइप से बंधे नहीं होते हैं, किसी भी डेटाटाइप के डेटा को पढ़ा जा सकता है (स्ट्रिंग को छोड़कर) बस आपको इसे निर्दिष्ट करना होगा। जबकि उन्मुख बाइट बाइट द्वारा बाइट पढ़ता

2.Character उन्मुख वर्ण दर वर्ण पढ़ता

3.Character उन्मुख धाराओं वर्ण एन्कोडिंग योजना (यूनिकोड) का उपयोग करते हुए बाइट उन्मुख किसी भी एन्कोडिंग स्कीम

4 का उपयोग नहीं करते। चरित्र उन्मुख धाराओं भी पाठक और लेखक के रूप में जाना जाता है धाराओं बाइट उन्मुख धाराओं के रूप में डेटा धाराओं-डाटा इनपुट स्ट्रीम और डाटा उत्पादन धारा में जाना जाता है

10

ByteStreams:

ओरेकल प्रलेखन पृष्ठ से byte streams के बारे में:

कार्यक्रम बाइट धाराओं का उपयोग इनपुट और 8 बिट बाइट की उत्पादन करने के लिए। सभी बाइट स्ट्रीम कक्षाएं InputStream और OutputStream से निकली हैं।

enter image description here

जब उपयोग करने के लिए:

:

बाइट धाराओं केवल सबसे आदिम आई/ओ

जब उपयोग करने के लिए नहीं करने के लिए इस्तेमाल किया जाना चाहिए

आपको पढ़ने के लिए बाइट स्ट्रीम का उपयोग नहीं करना चाहिए कैरेक्टर स्ट्रीम

उदा।एक पाठ फ़ाइल

चरित्र स्ट्रीम पढ़ने के लिए:

ओरेकल प्रलेखन के बारे में पेज character streams से:

जावा मंच भंडार चरित्र यूनिकोड सम्मेलनों का उपयोग कर मूल्यों। कैरेक्टर स्ट्रीम I/O स्वचालित रूप से स्थानीय वर्ण सेट से और इस आंतरिक प्रारूप का अनुवाद करता है।

सभी चरित्र धारा वर्ग Reader और Writer से निकले हैं।

कैरेक्टर स्ट्रीम अक्सर बाइट स्ट्रीम के लिए "रैपर" होते हैं। चरित्र धारा भौतिक I/O करने के लिए बाइट स्ट्रीम का उपयोग करती है, जबकि वर्ण स्ट्रीम वर्णों और बाइट्स के बीच अनुवाद संभालती है।

दो सामान्य उद्देश्य बाइट-टू-कैरेक्टर "पुल" धाराएं हैं: InputStreamReader और OutputStreamWriter

जब उपयोग करने के लिए:

चरित्र धाराओं या तो Socket या वर्ण

की File से सारांश में पढ़ने के लिए:

बाइट धारा पढ़ता है और में एक बाइट लिखना एक वक़्त। अधिक परिष्कृत डेटा से निपटने के दौरान हमें बाइट स्ट्रीम के उपयोग से बचना चाहिए।

कैरेक्टर स्ट्रीम और अन्य उपलब्ध धाराओं का उपयोग परिष्कृत डेटा को संभालने के लिए किया जाना चाहिए।

+0

ये अवधारणाएं हमेशा एक रहस्य होती हैं। [प्रश्न] (https://stackoverflow.com/q/46953036/3317808) – overexchange

0

एक वर्ण धारा चरित्र द्वारा फ़ाइल चरित्र को पढ़ेगी। चरित्र धाराएं 16-बिट वर्णों को पढ़ने में सक्षम हैं (बाइट स्ट्रीम 8-बिट वर्ण पढ़ती हैं)। कैरेक्टर स्ट्रीम 16-बिट डेटा या इसके विपरीत, लगभग 8-बिट डेटा का अनुवाद करने में सक्षम हैं। कैरेक्टर स्ट्रीम एएससीआईआई, यूनिकोड, यूटीएफ -8, यूटीएफ -16 इत्यादि के सभी प्रकार के चरित्र सेटों का समर्थन कर सकती है लेकिन बाइट स्ट्रीम केवल एएससीआईआईआई चरित्र सेट के लिए उपयुक्त है। जावा प्लेटफ़ॉर्म यूनिकोड सम्मेलनों का उपयोग करके चरित्र मानों को संग्रहीत करता है। कैरेक्टर स्ट्रीम I/O स्वचालित रूप से स्थानीय वर्ण सेट से और इस आंतरिक प्रारूप का अनुवाद करता है।

जब तक आप छवि और ध्वनि फ़ाइलों जैसे बाइनरी डेटा के साथ काम नहीं कर रहे हैं, तो आपको पाठकों और लेखकों को चरित्र धाराओं के साथ जानकारी पढ़ने और लिखने के लिए उपयोग करना चाहिए।

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