C# 如何在使用Ionic.zip.ZipFile保存到磁盘之前获取zip文件的大小?
我正在使用Ionic.Zip.ZipFile。我想创建10 mb的Zip文件。在保存到磁盘之前,我需要获得ZipFile的大小。可以吗C# 如何在使用Ionic.zip.ZipFile保存到磁盘之前获取zip文件的大小?,c#,zip,zipfile,C#,Zip,Zipfile,我正在使用Ionic.Zip.ZipFile。我想创建10 mb的Zip文件。在保存到磁盘之前,我需要获得ZipFile的大小。可以吗 private static string tempPath = "@Temp Folder"; List<string> fileNames = new List<string>(); using (Ionic.Zip.ZipFile zf = new Ionic.Zip.ZipFile()) {
private static string tempPath = "@Temp Folder";
List<string> fileNames = new List<string>();
using (Ionic.Zip.ZipFile zf = new Ionic.Zip.ZipFile())
{
for (int i = 0; i < fileNames.Count; i++)
{
zf.AddFile(tempPath + fileNames[i], string.Empty);
//How can I get size of zf before save here ?
if(zf size==10mb)
{
zf.Save(tempPath + string.Format("{0}-{1}-{2}.zip","XXX", "XXX",
DateTime.Now.ToString("yyyyMMdd")));
}
}
}
private静态字符串tempPath=“@Temp Folder”;
列表文件名=新列表();
使用(Ionic.Zip.ZipFile zf=new-Ionic.Zip.ZipFile())
{
对于(int i=0;i
您可以将邮政编码保存到内存流中
:
var ms = new MemoryStream();
zip.Save(ms);
然后,阅读图片并获得尺寸
如果仍要将其保存到磁盘,只需使用已有的内存流即可:
FileStream file = new FileStream("file.zip", FileMode.Create, FileAccess.Write);
// I believe you'll need to rewind the stream before saving
ms.Seek(0, SeekOrigin.Begin);
ms.WriteTo(file);
file.Close();
ms.Close();
它几乎永远不会是
==10mb
。您必须指定允许的不足或过度程度。所需的解决方案并不完全清楚,是否要停止写入或创建多个zip文件?@HenkHolterman我的临时文件夹中有10000个pdf文件。我想从该文件夹创建多个zip文件。zip文件的最大大小为10 mb。