2011-10-14 16 views
6

मैं फ़ाइल को ज़िप करने के लिए निम्न कोड का उपयोग कर रहा हूं और यह ठीक काम करता है लेकिन जब मैं WinRar के साथ डिकंप्रेस करता हूं तो मुझे एक्सटेंशन के बिना मूल फ़ाइल नाम मिलता है, कोई संकेत क्यों है कि फ़ाइल नाम myReport.xls है जब मैं डिकंप्रेस करता हूं केवल myReport?GZipStream काम करता है लेकिन एक्सटेंशन खो गया है

using (var fs = new FileStream(fileName, FileMode.Open)) 
{ 
    byte[] input = new byte[fs.Length]; 
    fs.Read(input, 0, input.Length); 
    fs.Close(); 

    using (var fsOutput = new FileStream(zipName, FileMode.Create, FileAccess.Write)) 
    using(var zip = new GZipStream(fsOutput, CompressionMode.Compress)) 
    { 
     zip.Write(input, 0, input.Length); 
     zip.Close(); 
     fsOutput.Close(); 
    } 
} 
+1

AFAIK GZip फ़ाइलों या फ़ोल्डरों के बारे में कोई जानकारी नहीं है यही कारण है कि ... OTOH ज़िप से बहुत अलग है, क्योंकि यह यह सब फ़ाइल सहित विशेषताओं आदि अंतर्निहित ... शायद आप एक ज़िप पुस्तकालय का उपयोग करना चाहते हैं? – Yahia

+0

आईओओ, जीजेआईपी एक संपीड़न प्रारूप है, जबकि ज़िप एक संपीड़ित संग्रह प्रारूप है। (टीएआर एक संग्रह प्रारूप का एक उदाहरण होगा।) –

उत्तर

12

GZip केवल एक फ़ाइल को संपीड़ित करता है - नाम जानने के बिना। इसलिए यदि आप फ़ाइल myReport.xls फ़ाइल को संपीड़ित करते हैं तो आपको इसे myReport.xls.gz नाम देना चाहिए। डिकंप्रेशन पर अंतिम फ़ाइल एक्सटेंशन हटा दिया जाएगा ताकि आप मूल फ़ाइल नाम के साथ समाप्त हो जाएं।

अपनी तरह से है कि यह कैसे उम्र के लिए यूनिक्स/लिनक्स में प्रयोग किया जाता है ...

+0

धन्यवाद, यह मुद्दा था, अब इसे बस .zip के साथ बदलने के बजाय एक्सटेंशन को जोड़कर हल किया गया। –

2

वास्तव में बहुत अजीब। एक संक्षिप्त खोज निम्नलिखित के साथ आया था:

http://dotnetzip.codeplex.com/discussions/268293

कहते हैं कौन सा GZipStream धारा है कि लिखा जा रहा के नाम जानने का कोई तरीका नहीं है, और पता चलता है कि आप FileName संपत्ति सीधे सेट।

उम्मीद है कि मदद करता है।

+0

नहीं, यह काम नहीं करता है क्योंकि ज़िप ऑब्जेक्ट में असाइन करने के लिए कोई नाम या फ़ाइल नाम नहीं है। .NET 3.5 और .NET 4 के साथ प्रयास किया लेकिन कोई अंतर नहीं ... :( –

+0

@ डेविड पाइरा लेकिन यदि आप डॉटनेटजिप का उपयोग करते हैं तो इसमें एक विधि 'एडफाइल' है - यह फ़ाइल नाम लेता है और इसे स्टोर करता है ... GZip ज़िप से कुछ अलग है हालांकि नाम समान हैं ... – Yahia

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