C# 如何将多个文件压缩到文件夹中,直到满足条件?
使用的技术:C#,IonicZip库 从多个日志文件的列表中(比如10000个,每个文件的大小都合理)。我必须将这些文件压缩到一个文件夹中。但压缩文件夹的大小必须在4MB以下。我如何拥有尽可能少的压缩文件夹C# 如何将多个文件压缩到文件夹中,直到满足条件?,c#,dotnetzip,ionic-zip,C#,Dotnetzip,Ionic Zip,使用的技术:C#,IonicZip库 从多个日志文件的列表中(比如10000个,每个文件的大小都合理)。我必须将这些文件压缩到一个文件夹中。但压缩文件夹的大小必须在4MB以下。我如何拥有尽可能少的压缩文件夹 private static string ZipAndReturnFolderPath(IEnumerable<string> files, string saveToFolder) { int listToSkip = 0; using (var zip =
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;
}
私有静态字符串ZipAndReturnFolderPath(IEnumerable文件,字符串保存文件夹)
{
int listToSkip=0;
使用(var zip=new ZipFile())
{
做
{
zip.AddFiles(files.Skip(listToSkip*10.Take)(10));
zip.Save(saveToFolder);
listToSkip++;
}
while((新文件信息(saveToFolder).Length<_lessThan4MB)和&totalfileslaining>0);
}
返回saveToFolder;
}
在这里,为了简洁起见,我删除了几行代码。参数:文件-保存要压缩的所有剩余文件的路径(不必担心如何维护)saveToFolder是压缩文件夹的目标(每次调用函数时都是唯一的)
我相信这是可行的。我已经检查了压缩的文件,没有发现重复。但是,将文件压缩到一个文件夹,检查条件,然后对已经压缩的文件夹中的下几个文件再次重复相同的过程,听起来不是一个好方法
我做错了什么,或者有什么有效的方法可以做到这一点吗?我认为你所追求的是什么,使用ZipoutStream可能就是你所追求的。可能重复的