DotNetZip 根据文件夹注释提取文件夹和内容

本文关键字:文件夹 提取 注释 DotNetZip | 更新日期: 2023-09-27 17:56:57

我有一些代码将不同的目录添加到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 值,因为它将是该文件夹的文件。

DotNetZip 根据文件夹注释提取文件夹和内容

调用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();
}

希望对您有所帮助。