我正在一个项目中使用SharpZipLib,想知道是否可以用它来查看zip文件的内容,如果其中的某个文件在我搜索的范围内有数据修改,则将其选出并复制到新目录中?有人知道这是否可能吗?
我正在一个项目中使用SharpZipLib,想知道是否可以用它来查看zip文件的内容,如果其中的某个文件在我搜索的范围内有数据修改,则将其选出并复制到新目录中?有人知道这是否可能吗?
是的,使用SharpZipLib可以枚举zip文件中的文件。您还可以从zip文件中选择文件并将这些文件复制到磁盘上的目录中。
下面是一个小示例:
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);
}*/
}
}
}
}
在上面的示例中,我使用一个MemoryStream
将ZipEntry
存储在内存中(以便进行进一步的分析)。如果符合某些条件,您也可以将ZipEntry
存储在磁盘上。希望这有所帮助。