Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用受密码保护的文件夹压缩多个压缩文件?_C#_Zip - Fatal编程技术网

C# 如何使用受密码保护的文件夹压缩多个压缩文件?

C# 如何使用受密码保护的文件夹压缩多个压缩文件?,c#,zip,C#,Zip,我正在开发一个程序,将压缩后的文件压缩到一个有密码保护的文件夹中。例如,我在一个文件夹D:\Work\ZippedFile中有多个压缩文件,它是ABC.zip、CDE.zip、TZE.zip。我想将所有压缩文件压缩到一个名为AllFile.zip的压缩文件中,并带有密码保护。到目前为止,我尝试的内容如下: string[] dirs = Directory.GetDirectories(@"D:\Work\ZippedFile"); foreach (string dir in dirs) if

我正在开发一个程序,将压缩后的文件压缩到一个有密码保护的文件夹中。例如,我在一个文件夹D:\Work\ZippedFile中有多个压缩文件,它是ABC.zip、CDE.zip、TZE.zip。我想将所有压缩文件压缩到一个名为AllFile.zip的压缩文件中,并带有密码保护。到目前为止,我尝试的内容如下:

string[] dirs = Directory.GetDirectories(@"D:\Work\ZippedFile");
foreach (string dir in dirs)
if (file.Contains(".zip"))
{
    using (var zip = new ZipFile())
    {
        string filename = file.Substring(51);
        zip.Password = "Abc!23";
        zip.Encryption = EncryptionAlgorithm.WinZipAes256;
        zip.AddFile(file, "");
        zip.Save(dir + "\\" + "AllFile.zip");
    }
}                    

我知道这将为每个压缩文件输出一个压缩文件,我希望有人能给我一个如何实现正确输出的想法。提前感谢。

不要为每个现有的zip文件创建新的zip文件。创建一个新的zip文件,并将所有现有的zip文件添加到其中

using (var zip = new ZipFile())
{
    string[] dirs = Directory.GetDirectories(@"D:\Work\ZippedFile");

    foreach (string dir in dirs)
    {
        if (file.Contains(".zip"))
        {   
            string filename = file.Substring(51);
            zip.AddFile(file, "");
        }
    }

    zip.Password = "Abc!23";
    zip.Encryption = EncryptionAlgorithm.WinZipAes256;
    zip.Save(dir + "\\" + "AllFile.zip");
} 

这不是很明显吗?将保存和创建ZipFile的新实例移到循环之外(循环中应该只有AddFile),这是否回答了您的问题?