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



使用的技术:C#IonicZip库。

从多个日志文件的列表中(假设为10000,每个文件的大小都合理)。我必须把这些文件压缩到一个文件夹里。但压缩文件夹的大小必须大约在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是压缩文件夹的目标(每次调用函数时都是唯一的)。

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

我做错了什么吗?或者有什么有效的方法可以做到这一点吗?

我认为你想要的已经在这里得到了答案,使用ZipOutputStream可能就是你想要的。

最新更新