4

使用的技术: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;
}

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

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

我做错了什么还是有什么有效的方法可以做到这一点?

4

1 回答 1

0

我认为你所追求的已经在这里得到了回答,使用ZipOutputStream可能就是你所追求的。

于 2017-01-10T10:35:39.510 回答