I’m using the following code, using the SharpZipLib library, to add files to a .zip file, but each file is being stored with its full path. I need to only store the file, in the ‘root’ of the .zip file.
string[] files = Directory.GetFiles(folderPath); using (ZipFile zipFile = ZipFile.Create(zipFilePath)) { zipFile.BeginUpdate(); foreach (string file in files) { zipFile.Add(file); } zipFile.CommitUpdate(); }
I can’t find anything about an option for this in the supplied documentation. As this is a very popular library, I hope someone reading this may know something.
My solution was to set the
NameTransformobject property of theZipFileto aZipNameTransformwith itsTrimPrefixset to the directory of the file. This causes the directory part of the entry names, which are full file paths, to be removed.What’s cool is the the NameTransform property is of type
INameTransform, allowing customisation of the name transforms.