मुझे इस टेस्ट फ़ंक्शन के साथ कोई समस्या है जहां मैं मेमोरी स्ट्रिंग में लेता हूं, इसे संपीड़ित करता हूं, और इसे डिकंप्रेस करता हूं। संपीड़न बहुत अच्छा काम करता है, लेकिन मुझे काम करने के लिए डिकंप्रेशन नहीं मिल रहा है।मैं System.IO.MemoryStream के साथ GZipStream का उपयोग कैसे करूं?
//Compress
System.IO.MemoryStream outStream = new System.IO.MemoryStream();
GZipStream tinyStream = new GZipStream(outStream, CompressionMode.Compress);
mStream.Position = 0;
mStream.CopyTo(tinyStream);
//Decompress
outStream.Position = 0;
GZipStream bigStream = new GZipStream(outStream, CompressionMode.Decompress);
System.IO.MemoryStream bigStreamOut = new System.IO.MemoryStream();
bigStream.CopyTo(bigStreamOut);
//Results:
//bigStreamOut.Length == 0
//outStream.Position == the end of the stream.
मेरा मानना है कि कम से कम उस में डेटा होना चाहिए कि bigStream बाहर है, खासकर यदि मेरे स्रोत धारा (outStream) पढ़ा जा रहा है। क्या यह एक एमएसएफटी बग या मेरा है?
+1 अच्छा जवाब Timwi। बस इसमें जोड़ने के लिए, GZip को डेटा के कुछ आंतरिक बफरिंग को संपीड़ित करने के लिए करने की आवश्यकता है। यह नहीं पता कि जब तक आप इसे बंद नहीं करते हैं तब तक यह डेटा प्राप्त कर लेता है और इसलिए यह अंतिम कुछ बाइट्स को थूक नहीं देता है और आंशिक स्ट्रीम विफल होने में विफल रहता है। – MerickOWA
मुझे लगता है कि हम .NET 3.5 (एकता के साथ काम कर रहे हैं) पर हैं, इसलिए। कॉपी अभी तक मौजूद नहीं है। एक स्ट्रीम से दूसरी स्ट्रीम में कॉपी करने के लिए एसओ पर कहीं और दिख रहे हैं: http://stackoverflow.com/questions/230128/best-way-to-copy-between-two-stream-instances – Almo
इसके लिए धन्यवाद, मैं रहा हूं दोनों दिशाओं में सही आउटपुट प्राप्त करने के लिए धाराओं को व्यवस्थित करने के तरीके को समझने में परेशानी हो रही है – MikeT