2011-09-21 5 views
1

Comment lire le contenu du fichier à partir de zip sans décompresser? Après avoir recherché le nom de fichier dans le fichier zip, je veux extraire le fichier dans le dossier temporaire de la fenêtre et copier le fichier, puis supprimer le fichier d'extraction. S'il vous plaît répondre à ma question.Comment lire le contenu du fichier zip?

+0

Quelle bibliothèque ZIP utilisez-vous? .NET n'a pas de support intégré pour les fichiers ZIP. – Heinzi

+1

Je crois que .NET * prend * en charge, à partir de v2: http://msdn.microsoft.com/en-us/library/system.io.compression.aspx –

+3

.Net prend en charge la compression gzip mais pas le format de fichier zip. – Guillaume

Répondre

3

Vous pouvez utiliser sharpziplib pour lire le fichier sans l'écrire sur le disque. Cela peut être fait comme ceci:

public string Uncompress(string zipFile, string entryName) 
    { 
     string s = string.Empty; 
     byte[] bBuffer = new byte[4096]; 
     ZipInputStream aZipInputStream = null; 

     aZipInputStream = new ZipInputStream(File.OpenRead(zipFile)); 
     ZipEntry anEntry; 
     while ((anEntry = aZipInputStream.GetNextEntry()) != null) 
     { 
      if (anEntry.Name == entryName) 
      { 
       MemoryStream aMemStream = new MemoryStream(); 
       int bSize; 
       do 
       { 
        bSize = aZipInputStream.Read(bBuffer, 0, bBuffer.Length); 
        aMemStream.Write(bBuffer, 0, bSize); 
       } 
       while (bSize > 0); 
       aMemStream.Close(); 
       byte[] b = aMemStream.ToArray(); 
       s = Encoding.UTF8.GetString(b); 
       aZipInputStream.CloseEntry(); 
       break; 
      } 
      else 
       aZipInputStream.CloseEntry(); 
     } 
     if (aZipInputStream != null) 
      aZipInputStream.Close(); 
     return s; 
    } 
Questions connexes