I have to create two folders inside of a zip file that I create programmatically using ICSharpCode.SharZipLib.Zip
. I want to:
private void AddToZipStream(byte[] inputStream, ZipOutputStream zipStream, string fileName, string fileExtension)
{
var courseName = RemoveSpecialCharacters(fileName);
var m_Bytes = inputStream;
if ((m_Bytes != null) && (zipStream != null))
{
var newEntry = new ZipEntry(ZipEntry.CleanName(string.Concat(courseName, fileExtension)));
newEntry.DateTime = DateTime.Now;
newEntry.Size = m_Bytes.Length;
zipStream.PutNextEntry(newEntry);
zipStream.Write(m_Bytes, 0, m_Bytes.Length);
zipStream.CloseEntry();
zipStream.UseZip64 = UseZip64.Off;
}
}
How do I create a directory using ZipEntry
and how do then add files to the directory located inside of the Zip archive?
The best solution at our project was to switch to the way better
https://dotnetzip.codeplex.com
https://github.com/haf/DotNetZip.Semverd
the methods are more straight forward to use
The answer above will work for several scenarios, but it will not work when you want to add an empty folder to a zip file.
I sifted through the SharpZipLib code and found that the only thing you need to do to create a folder is a trailing "/" forward slash on the ZipEntry name.
Here's the code from the library:
So, just create folders as though they are files with ZipEntry, and put a forward slash on the end. It works. I've tested it.
I figured it out:
new ZipEntry("Folder1/Archive.txt");
andnew ZipEntry("Folder2/Archive2.txt");