加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 21:04:40 所属栏目:百科 来源:网络整理
导读:使用的技术:C#,IonicZip库. 从多个日志文件的列表中(假设10,000个,每个合理的大小).我必须将这些文件压缩到一个文件夹中.但是压缩文件夹的大小必须大约不到4MB.如何使用最少数量的压缩文件夹. private static string ZipAndReturnFolderPath(IEnumerablestr
使用的技术: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可能就是你所追求的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读