2010-01-22 7 views
11

के साथ स्ट्रिंग अनज़िप मैं ज़िप और स्ट्रिंगज़िप और Deflate

यहाँ अनज़िप करने के लिए की जरूरत है कोड है:

public static byte[] ZipStr(String str) 
{ 
    using (MemoryStream output = new MemoryStream()) 
    using (DeflateStream gzip = new DeflateStream(output, CompressionMode.Compress)) 
    using (StreamWriter writer = new StreamWriter(gzip)) 
     { 
       writer.Write(str); 
       return output.ToArray(); 
     } 
} 

और

public static string UnZipStr(byte[] input) 
{ 
    using (MemoryStream inputStream = new MemoryStream(input)) 
    using (DeflateStream gzip = new DeflateStream(inputStream, CompressionMode.Decompress)) 
    using (StreamReader reader = new StreamReader(gzip)) 
     { 
     reader.ReadToEnd(); 
     return System.Text.Encoding.UTF8.GetString(inputStream.ToArray()); 
     } 
} 

ऐसा लगता है UnZipStr विधि में त्रुटि नहीं है। क्या कोई मेरी मदद कर सकता है?

+4

आप एक संकलक त्रुटि हो रही है, या एक अपवाद है, या क्या:

निम्नलिखित कोड के बजाय का प्रयास करें? क्या आप "त्रुटि" के बारे में अधिक जानकारी दे सकते हैं? – Nick

उत्तर

24

दो अलग-अलग समस्याएं हैं। सबसे पहले, ZipStr में आपको StreamWriter को फ्लश या बंद करने की आवश्यकता है और MemoryStream से पढ़ने से पहले DeflateStream बंद करें।

दूसरा, UnZipStr में, आप inputStream में संकुचित बाइट्स से अपनी परिणाम स्ट्रिंग का निर्माण कर रहे हैं। आपको इसके बजाय reader.ReadToEnd() के परिणाम लौटाना चाहिए।

StreamWriter और StreamReader रचनाकारों में स्ट्रिंग एन्कोडिंग निर्दिष्ट करना भी एक अच्छा विचार होगा।

public static byte[] ZipStr(String str) 
{ 
    using (MemoryStream output = new MemoryStream()) 
    { 
     using (DeflateStream gzip = 
      new DeflateStream(output, CompressionMode.Compress)) 
     { 
      using (StreamWriter writer = 
       new StreamWriter(gzip, System.Text.Encoding.UTF8)) 
      { 
       writer.Write(str);   
      } 
     } 

     return output.ToArray(); 
    } 
} 

public static string UnZipStr(byte[] input) 
{ 
    using (MemoryStream inputStream = new MemoryStream(input)) 
    { 
     using (DeflateStream gzip = 
      new DeflateStream(inputStream, CompressionMode.Decompress)) 
     { 
      using (StreamReader reader = 
       new StreamReader(gzip, System.Text.Encoding.UTF8)) 
      { 
       return reader.ReadToEnd(); 
      } 
     } 
    } 
} 
+0

@ मिखाइल 'जीआईपीएसआरटी' के साथ भी एक समस्या थी। मैंने अपना जवाब अपडेट कर लिया है। –

+0

@ फिलरॉस बहुत बहुत धन्यवाद, लेकिन मेरे पास एक सवाल है। इस बहुप्रचारित कैसे करें? टीपीएल का उपयोग करना? – IamStalker