Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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#_Dotnetzip_Ionic Zip - Fatal编程技术网

C# 如何将多个文件压缩到文件夹中,直到满足条件?

C# 如何将多个文件压缩到文件夹中,直到满足条件?,c#,dotnetzip,ionic-zip,C#,Dotnetzip,Ionic Zip,使用的技术:C#,IonicZip库 从多个日志文件的列表中(比如10000个,每个文件的大小都合理)。我必须将这些文件压缩到一个文件夹中。但压缩文件夹的大小必须在4MB以下。我如何拥有尽可能少的压缩文件夹 private static string ZipAndReturnFolderPath(IEnumerable<string> files, string saveToFolder) { int listToSkip = 0; using (var zip =

使用的技术:C#IonicZip

从多个日志文件的列表中(比如10000个,每个文件的大小都合理)。我必须将这些文件压缩到一个文件夹中。但压缩文件夹的大小必须在4MB以下。我如何拥有尽可能少的压缩文件夹

private static string ZipAndReturnFolderPath(IEnumerable<string> files, string saveToFolder)
{
    int listToSkip = 0;
    using (var zip = new ZipFile())
    {
        do
        {
            zip.AddFiles(files.Skip(listToSkip * 10).Take(10));
            zip.Save(saveToFolder);
            listToSkip++;
        }
        while ((new FileInfo(saveToFolder).Length < _lessThan4MB) && totalFilesRemaining > 0);                 
    }
    return saveToFolder;
}
私有静态字符串ZipAndReturnFolderPath(IEnumerable文件,字符串保存文件夹)
{
int listToSkip=0;
使用(var zip=new ZipFile())
{
做
{
zip.AddFiles(files.Skip(listToSkip*10.Take)(10));
zip.Save(saveToFolder);
listToSkip++;
}
while((新文件信息(saveToFolder).Length<_lessThan4MB)和&totalfileslaining>0);
}
返回saveToFolder;
}
在这里,为了简洁起见,我删除了几行代码。参数:文件-保存要压缩的所有剩余文件的路径(不必担心如何维护)saveToFolder是压缩文件夹的目标(每次调用函数时都是唯一的)

我相信这是可行的。我已经检查了压缩的文件,没有发现重复。但是,将文件压缩到一个文件夹,检查条件,然后对已经压缩的文件夹中的下几个文件再次重复相同的过程,听起来不是一个好方法


我做错了什么,或者有什么有效的方法可以做到这一点吗?

我认为你所追求的是什么,使用ZipoutStream可能就是你所追求的。

可能重复的