2011-09-21 197 views
1

如何在不解壓的情況下從zip文件中讀取文件的內容? 在zip中搜索文件名後,我想在窗口temp文件夾中提取文件並複製文件,然後刪除提取文件。 請回復我的問題。如何閱讀zip文件內容?

+0

您使用哪個ZIP庫? .NET沒有內置的ZIP文件支持。 – Heinzi

+1

我相信.NET * *有支持,因爲v2:http://msdn.microsoft.com/en-us/library/system.io.compression.aspx –

+3

.Net支持gzip壓縮,但不支持zip文件格式。 – Guillaume

回答

3

您可以使用sharpziplib在不寫入磁盤的情況下讀取文件。 它可以這樣做:

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; 
    }