Search code examples
c#linqdotnetzip

Extracting a specific folder from a zip using DotNetZip


I've searched around for examples, but can't seem to find a DotNetZip scenario that involves extracting a certain folder. I'm trying to extract a folder called "CSS" from a .zip file, and it is a top-level folder inside the .zip file. This is the code I have so far:

using (ZipFile zip1 = ZipFile.Read(savedFileName))
{
    var selection = from e in zip1.Entries
                    where System.IO.Path.GetFileName(e.FileName).StartsWith("CSS/")
                    select e;

    foreach (var e in selection)
    e.Extract(_contentFolder);                
}

The current selection grabs nothing, and I could use some help rewriting it so it extracts the css folder and all of its subdirectories and files.


Solution

  • This worked for me.

              public void ExtractFiles(string fileName, string outputDirectory)
              {
                    using (ZipFile zip1 = ZipFile.Read(fileName))
                    {
                        var selection = (from e in zip1.Entries
                                         where (e.FileName).StartsWith("CSS/")
                                         select e);
    
    
                        Directory.CreateDirectory(outputDirectory);
    
                        foreach (var e in selection)
                        {                            
                            e.Extract(outputDirectory);        
                        }
                    }
             }