自动提取zip文件

时间:2014-07-27 14:55:16

标签: c# dotnetzip

我尝试制作一个程序,每次程序启动时都会提取一个特定的zip文件。

这是我创建zip文件的代码:

//creating the file
ZipFile File = new ZipFile(System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\ABCD.zip");

//Adding files

File.AddFile(System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\ab.dat", "");
File.AddFile(System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\cd.dat", "");

//Save the file
File.Save();

我想自动将文件 ab.dat cd.dat 从ABCD.zip解压缩到.exe文件目录。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

主要来自DotNetZip documentation

private void Extract()
{
    //Zip Location
    string zipToUnpack = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\ABCD.zip";
    // .EXE Directory
    string unpackDirectory = System.IO.Path.GetDirectoryName(
        System.Reflection.Assembly.GetExecutingAssembly().Location);

    using (ZipFile zip = ZipFile.Read(zipToUnpack))
    {
        foreach (ZipEntry e in zip)
        {
             //If filename matches
             if (e.FileName == "ab.dat" || e.FileName == "cd.dat")
                 e.Extract(unpackDirectory, ExtractExistingFileAction.OverwriteSilently);
        }
    }
}

您还可以使用ExtractSelectEntries选择其中的文件来过滤结果:

zip.ExtractSelectedEntries("name = 'ab.dat' OR name = 'cd.dat'", "\", unpackDirectory, ExtractExistingFileAction.OverwriteSilently)

或选择带通配符的所有.dat个文件

zip.ExtractSelectedEntries("name = '*.dat'", "\", unpackDirectory, ExtractExistingFileAction.OverwriteSilently)

使用每个ZipEntry的{​​{1}}属性来查看它是否具有您要提取的名称。