Search code examples
c#zipextractdotnetzip

Extract a ZIP file programmatically by DotNetZip library?


I have a function that get a ZIP file and extract it to a directory (I use DotNetZip library.)

public void ExtractFileToDirectory(string zipFileName, string outputDirectory)
{
     ZipFile zip = ZipFile.Read(zipFileName);
     Directory.CreateDirectory(outputDirectory);
     zip.ExtractAll(outputDirectory,ExtractExistingFileAction.OverwriteSilently);
}

My ZIP file contains multiple files and directories. But I want to extract only some of these files, not all of them.

How can I make this work?


Solution

  • You need to test each ZipEntry to see if you want to extract it:

    public void ExtractFileToDirectory(string zipFileName, string outputDirectory)
    {
         ZipFile zip = ZipFile.Read(zipFileName);
         Directory.CreateDirectory(outputDirectory);
          foreach (ZipEntry e in zip)
          {
            // check if you want to extract e or not
            if(e.FileName == "TheFileToExtract") 
              e.Extract(outputDirectory, ExtractExistingFileAction.OverwriteSilently);
          }
    }