2011-11-29 53 views
6

我在一个项目中使用SharpZipLib,并且想知道是否可以使用它来查看一个zip文件,并且如果其中一个文件中的某个文件有一个范围被修改我正在寻找然后选择该文件并将其复制到一个新的目录?有人知道这是可能的吗?SharpZipLib检查并选择一个ZIP文件的内容

+0

我相信它是可能的。您将不得不打开存档并查看文件集合的内容。取决于上次修改信息是否公开将决定您是否能够执行其他任何操作。我不会公开它的原因,SharpZibLib库是基于允许的,所以它也应该允许这样做。否则,总会有其他解决方案可以实现这一点。 –

回答

8

是的,可以使用SharpZipLib枚举zip文件的文件。您也可以从zip文件中选择文件并将这些文件复制到磁盘上的目录中。

这里是一个小例子:上述我使用MemoryStream来存储在存储器中的ZipEntry(用于进一步分析)

using (var fs = new FileStream(@"c:\temp\test.zip", FileMode.Open, FileAccess.Read)) 
{ 
    using (var zf = new ZipFile(fs)) 
    { 
    foreach (ZipEntry ze in zf) 
    { 
     if (ze.IsDirectory) 
     continue; 

     Console.Out.WriteLine(ze.Name);    

     using (Stream s = zf.GetInputStream(ze)) 
     { 
     byte[] buf = new byte[4096]; 
     // Analyze file in memory using MemoryStream. 
     using (MemoryStream ms = new MemoryStream()) 
     { 
      StreamUtils.Copy(s, ms, buf); 
     } 
     // Uncomment the following lines to store the file 
     // on disk. 
     /*using (FileStream fs = File.Create(@"c:\temp\uncompress_" + ze.Name)) 
     { 
      StreamUtils.Copy(s, fs, buf); 
     }*/ 
     }    
    } 
    } 
} 

在该示例中。您还可以在磁盘上存储ZipEntry(如果它符合特定条件)。

希望,这有助于。

+0

这正是我正在寻找的,非常感谢! – DukeOfMarmalade

相关问题