2013-12-11 2 views
5

.NET Framework 4.5 ने System.IO.Compression में कक्षाओं के माध्यम से ज़िप फ़ाइलों के लिए समर्थन जोड़ा।सी # .NET 4.5 का उपयोग कर, पहले फ़ाइल में निकालने के बिना ज़िप संग्रह से स्मृति में फ़ाइल को कैसे पढ़ा जाए?

मान लें कि मेरे पास .ZIP संग्रह है जिसमें रूट में sample.xml फ़ाइल है। मैं इस फ़ाइल को सीधे संग्रह से मेमोरी स्ट्रीम में पढ़ना चाहता हूं और उसके बाद इसे कस्टम .NET ऑब्जेक्ट में deserialize करना चाहता हूं। इसे करने का बेहतरीन तरीका क्या है?

उत्तर

10

ZipArchive और XmlSerializer.Deserialize() मैन्युअल पृष्ठों से अनुकूलित किया गया।

ZipArchiveEntry कक्षा में Open() विधि है, जो फ़ाइल में स्ट्रीम लौटाती है।

string zipPath = @"c:\example\start.zip"; 

using (ZipArchive archive = ZipFile.OpenRead(zipPath)) 
{ 
    var sample = archive.GetEntry("sample.xml"); 
    if (sample != null) 
    { 
     using (var zipEntryStream = sample.Open()) 
     {    
      XmlSerializer serializer = new XmlSerializer(typeof(SampleClass)); 

      SampleClass deserialized = 
       (SampleClass)serializer.Deserialize(zipEntryStream); 
     } 
    } 
} 

ध्यान दें कि, as documented on MSDN, आप ZipFile वर्ग का उपयोग करने के नेट विधानसभा System.IO.Compression.FileSystem के लिए एक संदर्भ जोड़ने की जरूरत है।

+0

ध्यान दें कि आपको ZipFile क्लास प्राप्त करने के लिए System.IO.Compression.FileSystem असेंबली का संदर्भ जोड़ने की आवश्यकता है। – sammy34

+1

@ सैमी धन्यवाद, अपडेट किया गया। – CodeCaster

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