I'm using the titled library from http://dotnetzip.codeplex.com/

I've zipped up a few folders and files zip.AddDirectory(path); where path is a fully qualified path to the folder I want to zip.

When I extract zip.ExtractAll(AppDomain.CurrentDomain.BaseDirectory + "Zipped"); I get the whole directory hierarchy in the "Zipped" folder.

That is fine if I want to restor files to the original folders, but I have a need to also extract to a user defined folder, and I'd like for just the relative for want of a better word folders to be extracted.

I'm having some trouble finding the explanation I want to say so I'll illustrate with a pic of the archive when I open with 7-Zip.


So if the user selects C:\Extracted\ as the target folder I only want the files and folders I see to be extracted to that location without "C:\users\susan\documents\my doc...etc"

I hope you understand, and thank you for reading my question.

I should add that I tried zip.FlattenFoldersOnExtract = true; but that just extracts all files without any folder structure at all, which is not what I want.

Apparently that option isn't available in that library. One workaraound that I read about is to extract to a temp folder then move the specific folder where you want. The only other option, I'm aware of, is to modify the library to allow it explicitly.

That's a shame, in my mind it's very basic functionality and I thought I was just missing something.

Did a little more investigating for you. The answer seems to be in the creation not in the extraction. Using the .net ZipFile class I was able to get relative folders inside the archive by setting the Environment.CurrentDirectory to the parent folder of the folder I want to archive. I would imagine that this would work with the library you're using. If not, to use the .net classes you need to add a reference to System.IO.Compression.Filesystem and add the using command using System.IO.Compression; in your .cs file

If all your archives are created with relative folders, the worst that might happen is you'll have to create the parent folder structure you want, before extracting.

Edited 1 Year Ago by tinstaafl

This article has been dead for over six months. Start a new discussion instead.