我正在一个项目中使用 SharpZipLib ,有个疑问:是否能够查看zip 文件,如果其中一个文件数据在我查找的范围内被修改,然后将这个文件提取出来复制到一个新的目录?能否实现这种可能?//codebyecom 编译
是的,可以使用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];
//用MemoryStream 在内存中分析文件。
using (MemoryStream ms = new MemoryStream())
{
StreamUtils.Copy(s, ms, buf);
}
// 取消下面代码的注释可以在磁盘中存储文件。
/*using (FileStream fs = File.Create(@"c:\temp\uncompress_" + ze.Name)) { StreamUtils.Copy(s, fs, buf); }*/ } } } }
在上面的示例中,我使用一个MemoryStream在内存中存储ZipEntry(用于进一步分析)。你也可以存储ZipEntry磁盘上(如果它符合特定的标准)。
希望,这可以帮助。