0

我想知道是否可以检查动态创建的 zip 文件的大小,因为我正在读取一个目录并生成一个 19 MB 的 zip,我希望创建两个 zip,一个 10MB 和一个其他 9MB。但是,当我在循环内的 zip 文件中给出 .Length 时,它说大小为 0。当我完成添加文件时,它说是 19MB。有人知道该怎么做吗?

我只使用 System.IO.Compression 来完成这项任务。

这是一些例子来展示我是如何尝试的

    String FilePath = "D:\Invoices";
    string[] oFiles = Directory.GetFiles(FilePath,"*.pdf");
    string name = DateTime.Now.Ticks.ToString()+".zip";
    using(FileStream archive1 = File.Open(name,FileMode.Create))
    {
       using(var arch = new ZipArchive(archive1,ZipArchiveMode.Update))
           {
            for(int i =0; i<oFiles.Length;i++)
               {
                var fileinf = new FileInfo(oFiles[i]);
                arch.CreateEntryFromFile(fileinf.FullName,fileinf.Name);
                //here the zip file is always 0 
                Console.WriteLine(archive1.Length);
                }
    
           }
    }
//here the zip file is updated 
4

1 回答 1

1

文档中

当您将模式设置为更新时……整个存档的内容都保存在内存中,并且在处理存档之前不会将数据写入基础文件或流。

如果您希望在添加内容时能够读取文件的大小,则需要使用ZipArchiveMode.Create.

否则,您应该使用该ZipArchiveEntry.CompressedSize属性来监控您添加到档案中的数量。

于 2020-09-26T01:48:16.980 回答