编程语言
首页 > 编程语言> > c# – 如何在满足条件之前将多个文件压缩到文件夹中?

c# – 如何在满足条件之前将多个文件压缩到文件夹中?

作者:互联网

使用的技术: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是压缩文件夹的目标(每次调用该函数时,这将是唯一的).

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

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

解决方法:

我认为你所追求的是answered here already,使用ZipOutputStream可能就是你所追求的.

标签:c,dotnetzip,ionic-zip
来源: https://codeday.me/bug/20190710/1428826.html