Автоматическое извлечение zip-файла

Я пытаюсь создать программу, которая извлекает определенный 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.

Спасибо за помощь.


person user2992413    schedule 27.07.2014    source источник
comment
stackoverflow.com/questions/2324626/, это не помогает?   -  person mybirthname    schedule 27.07.2014


Ответы (1)


Взято в основном из документации DotNetZip:

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)

Используйте свойство FileName каждого ZipEntry, чтобы узнать, есть ли у него имя, которое вы хотите извлечь.

person Cyral    schedule 27.07.2014