使用的技术: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可能就是你所追求的.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。