2012-06-29 13 views
13

मैं जानना चाहता हूं कि स्ट्रीम को बाइट में कैसे परिवर्तित करना है।सी # कनवर्ट सिस्टम.आईओ। स्ट्रीम टू बाइट []

मैं इस कोड को खोजने के लिए, लेकिन मेरे मामले में यह काम नहीं करता है:

var memoryStream = new MemoryStream(); 
paramFile.CopyTo(memoryStream); 
byte[] myBynary = memoryStream.ToArray(); 
myBinary = memoryStream.ToArray(); 

लेकिन मेरे मामले में, लाइन paramFile.CopyTo (MemoryStream) यह कुछ भी नहीं, कोई अपवाद नहीं होता है, आवेदन अभी भी काम करता है , लेकिन कोड अगली पंक्ति के साथ जारी नहीं है।

धन्यवाद।

byte[] myBinary = File.ReadAllBytes(@"C:\MyDir\MyFile.bin"); 
इसके अलावा

, एक MemoryStream CopyTo की कोई जरूरत नहीं है:

+0

क्या paramfile है? –

+0

आह, क्षमा करें, पैरा फ़ाइल पैरामीटर है जो मुझे विधि में प्राप्त होता है, एक SystemIO.Stream है। –

उत्तर

30

के लिए लिखा था आप पढ़ रहे हैं एक फ़ाइल सिर्फ File.ReadAllBytes Method का उपयोग करें बस एक बाइट सरणी प्राप्त करने के लिए जब तक आपका स्रोतस्ट्रीम लंबाई संपत्ति का समर्थन करता है:

byte[] myBinary = new byte[paramFile.Length]; 
paramFile.Read(myBinary, 0, (int)paramFile.Length); 
+0

वास्तव में मेरे पास एक स्ट्रीम है, कोई फ़ाइल नहीं। हालांकि मूल डेटा एक फ़ाइल है, लेकिन मैं फ़ाइल को डब्ल्यूसीएफ में स्ट्रीम में भेजता हूं। तो मुझे धारा को बाइट [] में बदलने की जरूरत है। लेकिन इस तरह से काम नहीं करता है, क्योंकि लंबाई संपत्ति एक लंबी है, और पढ़ने की विधि एक int का उपयोग करें। –

+1

जब तक आप 2147483647 (int.MaxValue) बाइट्स से अधिक न हों, यह ठीक काम करता है। अन्यथा आपको काउंटर के साथ सरणी इकट्ठा करना होगा। – JamieSee

26

यह एक विस्तार विधि मैं स्ट्रीम वर्ग

public static class StreamExtensions 
    { 
     public static byte[] ToByteArray(this Stream stream) 
     { 
      stream.Position = 0; 
      byte[] buffer = new byte[stream.Length]; 
      for (int totalBytesCopied = 0; totalBytesCopied < stream.Length;) 
       totalBytesCopied += stream.Read(buffer, totalBytesCopied, Convert.ToInt32(stream.Length) - totalBytesCopied); 
      return buffer; 
     } 
    } 
+0

एथेंस, मुझे नहीं लगता कि आपके पास एक अतिरिक्त FromByteArray विधि है जो आसपास बिछा रही है? :-) मैं आपकी विधि का उपयोग कर रहा हूं, मुझे अभी इसे वापस बदलने में सक्षम होना चाहिए। –

+1

इससे मदद मिल सकती है। http://stackoverflow.com/questions/4736155/how-do-i-convert-byte-to-stream-in-c –