You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

在C#中解压WinRAR 5.5归档文件遇SharpCompress报错求助

解决SharpCompress无法处理WinRAR 5.5+生成的RAR归档问题

我之前也踩过这个坑!WinRAR在2017年7月发布5.5版本时,对RAR压缩标准做了更新(也就是后来的RAR5格式),而你当前使用的SharpCompress版本刚好不支持这个新格式,这就导致了报错:

System.InvalidOperationException: Cannot determine compressed stream type. Supported Archive Formats: Zip, GZip, Tar, Rar, 7Zip at SharpCompress.Archive.ArchiveFactory.Open (System.IO.Stream stream, SharpCompress.Common.Options options) [0x00104] in :0 at ImporterProject.Progra...

给你几个可行的解决办法:

  • 优先升级SharpCompress到最新稳定版:SharpCompress后续的版本已经补上了对RAR5格式的支持,直接通过NuGet更新就行。可以用命令行:
    Install-Package SharpCompress -Version [最新版本号]
    
    或者在项目的包管理界面里找到SharpCompress,选择更新到最新版,这是最彻底的解决方式。
  • 先排查归档文件本身的问题:有时候报错也可能是文件损坏导致的,先拿WinRAR打开这个归档测试下,确认能正常解压,排除文件本身的问题。
  • 临时指定归档类型(应急方案):如果暂时没法升级库,可以试试在调用ArchiveFactory.Open时手动指定RAR类型,跳过自动检测的步骤,示例代码如下:
    using (var stream = File.OpenRead("your-target.rar"))
    {
        var options = new SharpCompress.Common.Options { ArchiveType = SharpCompress.Common.ArchiveType.Rar };
        var archive = SharpCompress.Archive.ArchiveFactory.Open(stream, options);
        // 执行后续的解压或读取操作
    }
    
    不过这个方案只是权宜之计,不一定能完美适配RAR5的所有特性,还是升级库最靠谱。

内容的提问来源于stack exchange,提问作者Flai

火山引擎 最新活动