我有一些代码可以为zip文件添加不同的目录。重要的是,我在提取过程中根据其注释了解每个文件夹。这是zip示例代码:
foreach (string folder in BackupDIRS)
{
string Source = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), folder);
string Folder = Path.GetFileName(Path.GetDirectoryName(Source));
ZipEntry e = zip.AddDirectory(Source, Folder);
e.Comment = "comment here";
}
以下是解压缩的代码:
using (ZipFile zip1 = ZipFile.Read(src))
{
foreach (ZipEntry e in zip1.Entries)
{
// e.comment will be null on actual files.
}
}
该文件夹的实际入口点有注释,但它们的文件没有,这会产生问题,因为它会导致大多数条目具有空注释。
如何使文件与文件夹具有相同的注释,或者DotNetZip顺序提取目录文件,这意味着如果它的null我可以使用最后一个非null值,因为它将是该文件夹的文件。
答案 0 :(得分:1)
调用ZipEntry e = zip.AddDirectory(Source, Folder);
后,您可以遍历ZipEntry
中的所有文件并分配评论:
using (var zipFile = new ZipFile(zipFilePath))
{
var addDirectory = zipFile.AddDirectory(directoryPathToAdd, "directory");
addDirectory.Comment = "directory comment";
var zipEntries = zipFile.Entries
.Where(x => !x.IsDirectory)
.Where(x => x.FileName.StartsWith("directory"));
foreach (var zipentry in zipEntries)
zipentry.Comment = "zip entry comment";
zipFile.Save();
}
希望它有所帮助。