C# - 如何检查 zip 文件是不是被拆分?

Posted

技术标签:

【中文标题】C# - 如何检查 zip 文件是不是被拆分?【英文标题】:C# - How to check if zip file is split?C# - 如何检查 zip 文件是否被拆分? 【发布时间】:2018-07-02 06:06:24 【问题描述】:

我想在我的项目中支持拆分 zip 文件,并在 zip 文件是否拆分的情况下有不同的实现。 如何检查 zip 文件是否被拆分?

    using Ionic.Zip;
    protected static bool IsZipFileSplit(string filePath)
    
        try
        
            ZipFile zipFile = new ZipFile(filePath);
            bool isSplit = ?????
            return isSplit;
        
        catch (ZipException)  
        catch (IOException)  
     

目前我正在使用 Ionic.Zip (DotNetZip Library)。 据我了解,它不会导出有关 zip 文件是否拆分的任何公共数据。 它确实具有公共属性 NumberOfSegmentsForMostRecentSave,但该值仅指当前 zip 文件的最后一次保存,而不适用于使用现有拆分 zip 文件路径打开的新 zip 文件。

【问题讨论】:

【参考方案1】:

Ionic.Zip 库当时不支持处理拆分的 zip 文件。 经过我们的研究,我们选择使用DotNetZip library,它支持处理拆分的 zip 文件。

要检查 zipFile 是否被拆分,您可以查看 zipFile.Info 字符串,其中会提及它包含的段数(“磁盘”)。如果数字为 0,则不拆分文件。

取自 DotNetZip.ZipFile.Info 属性:

 public string Info

  get
  
    StringBuilder stringBuilder = new StringBuilder();
    ...
    stringBuilder.Append(string.Format("     disk with CD: 0\n", (object)this._diskNumberWithCd));
    return stringBuilder;
   

【讨论】:

以上是关于C# - 如何检查 zip 文件是不是被拆分?的主要内容,如果未能解决你的问题,请参考以下文章

C#:以编程方式创建拆分 zip 文件

如何知道拆分字符串的索引是不是存在 C# .NET

如何将一个巨大的zip文件拆分成多个卷?

如何在java中找到拆分的存档?

如何在 C# 中的 WinRAR、7Zip、Zip、Tar、Winzip 中检查文件是不是存在

如何拆分camelCase字符串并检查每个拆分词是不是是数组的一部分?