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

时间:2017-01-10 10:26:11

标签: c# dotnetzip ionic-zip

使用的技术: C# IonicZip 库。

从多个日志文件列表中(假设10,000个,每个合理数量的大小)。我必须将这些文件压缩到一个文件夹中。但是压缩文件夹的大小必须大约不到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;
}

在这里,为了简明扼要,我删除了几行代码。参数:文件 - 保存要压缩的剩余文件总数的路径(不要担心我将如何维护)。 saveToFolder 是压缩文件夹的目的地(每次调用该函数时都是唯一的。)

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

我做错了什么或者有什么有效的方法可以实现这个目标吗?

1 个答案:

答案 0 :(得分:0)

我认为你所追求的是answered here already,使用Thread.Sleep(3000);可能就是你所追求的。