【问题标题】:Zipping specific files and folders with C# (System.IO.Compression)使用 C# (System.IO.Compression) 压缩特定文件和文件夹
【发布时间】:2014-03-10 01:42:59
【问题描述】:

我的项目有一个压缩特定文件的归档方法。

所有这些文件都包含在 zip 中,但对于我添加的条目之一,它没有添加文件,而是添加了包含文件的文件夹的整个路径。

我目前的做法是用其中一个目录创建一个 zip 文件,然后用需要添加的其他文件更新它(它们位于不同的目录中)。

例如:

压缩文件

  • 文件 1
  • C:\...\...\...\...\文件2

理想的情况是:

压缩文件

  • 文件 1
  • 文件 2

附上代码:

    string zipFileName = "example.zip";
    string zipFile = ArchiveDirectory + "\\" + zipFileName;

    ZipFile.CreateFromDirectory(OutputDirectory, zipFile);

    using (FileStream zipToOpen = new FileStream(zipFile, FileMode.Open))
    {
        using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Update))
        {
            ZipArchiveEntry results = archive.CreateEntry(ResultsDirectory);
            ZipArchiveEntry log = archive.CreateEntry(LogPath);
        }
    }

谢谢。

【问题讨论】:

    标签: c# compression zip


    【解决方案1】:

    我建议您使用ZipStorer Library 来更轻松地管理您项目中的存档。例如,要归档具有不同文件和文件夹路径的目录,您可以这样做:

    System.IO.Compression.ZipStorer zip;
    
    zip = System.IO.Compression.ZipStorer.Open(strZipFilePath, FileAccess.Write);
    
    zip.EncodeUTF8 = true;
    
    string path = "C:\\MyRootFolder\\";
    string[] arrFiles = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories);
    foreach (var item in arrFiles)
    {
         string newPath = item.Replace(path, "");
         zip.AddFile(System.IO.Compression.ZipStorer.Compression.Deflate,
                    item, newPath, "");
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-25
      • 1970-01-01
      • 1970-01-01
      • 2010-12-14
      • 2010-09-05
      • 1970-01-01
      • 1970-01-01
      • 2016-06-25
      相关资源
      最近更新 更多