将文件添加到现有Zip中

The*_*ark 4 c# dotnetzip

我可以成功地将zip文件夹中的文件解压缩到一个文件夹中,但我不太确定如何获取这些文件并将它们添加到现有的zip文件中.我将它们提取到桌面上名为"mod"的目录中,然后我需要将它们添加到另一个zip文件中.救命?这是我的提取代码 -

ZipFile zip = ZipFile.Read(myZip);
zip.ExtractAll(outputDirectory,ExtractExistingFileAction.OverwriteSilently);
Run Code Online (Sandbox Code Playgroud)

感谢帮助,谢谢.

Mar*_*all 9

尝试尝试一下,一旦从源zip文件中提取文件,您需要将目标zip文件读入ZipFile对象,然后可以使用该AddFiles方法将源文件添加到目标文件,然后保存.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; 
using Ionic.Zip;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string myZip = @"C:\temp\test.zip";
            string myOtherZip = @"C:\temp\anotherZip.zip";
            string outputDirectory = @"C:\ZipTest";

            using (ZipFile zip = ZipFile.Read(myZip))
            {
                zip.ExtractAll(outputDirectory, ExtractExistingFileAction.OverwriteSilently);
            }

            using (ZipFile zipDest = ZipFile.Read(myOtherZip))
            {
                //zipDest.AddFiles(System.IO.Directory.EnumerateFiles(outputDirectory)); //This will add them as a directory
                zipDest.AddFiles((System.IO.Directory.EnumerateFiles(outputDirectory)),false,""); //This will add the files to the root
                zipDest.Save();
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

将目录添加到ZipFile的修改方法(这将适用于单个子目录级别)

using (ZipFile zipDest = ZipFile.Read(myOtherZip))
{
    foreach (var dir in System.IO.Directory.GetDirectories(outputDirectory))
    {
        zipDest.AddFiles((System.IO.Directory.EnumerateFiles(dir)),false,outputDirectory ); //directory to the root
    }
    zipDest.AddFiles((System.IO.Directory.EnumerateFiles(outputDirectory)),false,""); //This will add the files to the root
    zipDest.Save();
}
Run Code Online (Sandbox Code Playgroud)

从Zip目录中删除文件的方法

List<string> files = zipDest.EntryFileNames.ToList<string>(); // Get List of all the archives files
for (int i = 0; i < files.Count; i++)
{
    if(files[i].Contains("ZipTest")) //replace the directory you wish to delete files from here
        zipDest.RemoveEntry(files[i]);
}
Run Code Online (Sandbox Code Playgroud)