使用C#(System.IO.Compression)压缩特定文件和文件夹

时间:2014-03-09 14:28:45

标签: c# compression zip

我的项目存档方法会压缩特定文件。

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

我目前的工作方式是创建一个包含其中一个目录的zip文件,然后将其与需要添加的其他文件一起更新(它们位于不同的目录中)。

例如:

的ZipFile

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

理想的是:

的ZipFile

  • 档案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);
        }
    }

感谢。

1 个答案:

答案 0 :(得分:0)

我建议您使用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, "");
}