我必须在zip文件中创建两个文件夹,我使用ICSharpCode.SharZipLib.Zip
以编程方式创建。我想:
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;
}
}
如何使用ZipEntry
创建目录,然后如何将文件添加到 Zip 存档内的目录?
答案 0 :(得分:12)
我明白了:
new ZipEntry("Folder1/Archive.txt");
和new ZipEntry("Folder2/Archive2.txt");
答案 1 :(得分:3)
上面的答案适用于多种情况,但是当您想要将空文件夹添加到zip文件时,它将无效。
我筛选了SharpZipLib代码,发现创建文件夹唯一需要做的就是ZipEntry名称上的尾部“/”正斜杠。
以下是图书馆的代码:
public bool IsDirectory {
get {
int nameLength = name.Length;
bool result =
((nameLength > 0) &&
((name[nameLength - 1] == '/') || (name[nameLength - 1] == '\\'))) ||
HasDosAttributes(16)
;
return result;
}
}
因此,只需创建文件夹就好像它们是ZipEntry文件一样,并在末尾添加正斜杠。有用。我测试了它。
答案 2 :(得分:0)
我们项目的最佳解决方案是切换到更好的方式
https://dotnetzip.codeplex.com
https://github.com/haf/DotNetZip.Semverd
方法更直接使用