2012-04-27 9 views
27

दोनों StreamReader और BinaryReader बाइनरी फ़ाइल से (उदाहरण के लिए) डेटा प्राप्त करने के लिए किया जा सकतास्ट्रीमरिएडर बनाम बाइनरी रीडर?

BinaryReader:

using (FileStream fs = File.Open(@"c:\1.bin",FileMode.Open)) 
      { 
        byte[] data = new BinaryReader(fs).ReadBytes((int)fs.Length); 
        Encoding.getstring.... 
      } 

StreamReader:

using (FileStream fs = File.Open(@"c:\1.bin",FileMode.Open)) 
      { 
       using (StreamReader sr = new StreamReader(fs,Encoding.UTF8)) 
       { 
         var myString=sr.ReadToEnd(); 
       } 
      } 

क्या अंतर है और मुझे कब उपयोग करना चाहिए?

+2

एक पाठ फ़ाइलों के लिए उपयुक्त है, दूसरा बाइनरी फाइलों के लिए उपयुक्त है? जैसा कि आप अपने नमूना कोड में भी चिपकते हैं। –

+0

@ एडम होल्ड्सवर्थ utf8 स्ट्रिंग में बाइनरी डेटा भी हो सकता है। –

+1

हां, लेकिन संभावित रूप से यूटीएफ -8 स्ट्रिंग के रूप में एन्कोड किया गया ... इसलिए संक्षेप में पाठ होगा। –

उत्तर

62

दोनों StreamReader और BinaryReader बाइनरी फ़ाइल

खैर से डेटा प्राप्त करने के लिए इस्तेमाल किया जा सकता है, StreamReader पाठ का एक द्विआधारी प्रतिनिधित्व से पाठ डेटा प्राप्त करने के लिए इस्तेमाल किया जा सकता।

BinaryReader मनमाने ढंग से बाइनरी डेटा प्राप्त करने के लिए उपयोग किया जा सकता है। यदि उस बाइनरी डेटा में से कुछ पाठ का प्रतिनिधित्व होता है, तो यह ठीक है - लेकिन ऐसा नहीं होना चाहिए।

निष्कर्ष: किसी

  • अपने डेटा की सम्पूर्णता पाठ डेटा का एक सीधा द्विआधारी कूटबन्धन है, तो StreamReader का उपयोग करें।
  • आप मौलिक द्विआधारी डेटा जो पाठ में कुछ भागों के लिए हो सकता है, का उपयोग BinaryReader
उदाहरण के लिए

तो, आप के साथ एक JPEG फ़ाइल पढ़ने की कोशिश नहीं होता है तो StreamReader

+0

लेकिन एक utf8 स्ट्रिंग के अंदर भी बाइनरी डेटा हो सकता है .. तो ...? –

+0

कोई utf8 स्ट्रिंग कोई जानकारी नहीं रख सकता है? –

+4

@ रॉयनामिर: नहीं, एक स्ट्रिंग टेक्स्ट है। "यूटीएफ -8 स्ट्रिंग" जैसी कोई चीज़ नहीं है - एक स्ट्रिंग का यूटीएफ -8 * द्विआधारी प्रतिनिधित्व * है ... एक स्ट्रिंग में टेक्स्ट डेटा होता है - यह वर्णों का अनुक्रम है। फिर आप इसे एन्कोडिंग का उपयोग करके बाइनरी प्रस्तुति में परिवर्तित करते हैं, जैसे कि यूटीएफ -8। कृपया http://csharpindepth.com/Articles/General/Unicode.aspx –

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