在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更新就行。可以用命令行:
或者在项目的包管理界面里找到SharpCompress,选择更新到最新版,这是最彻底的解决方式。Install-Package SharpCompress -Version [最新版本号] - 先排查归档文件本身的问题:有时候报错也可能是文件损坏导致的,先拿WinRAR打开这个归档测试下,确认能正常解压,排除文件本身的问题。
- 临时指定归档类型(应急方案):如果暂时没法升级库,可以试试在调用
ArchiveFactory.Open时手动指定RAR类型,跳过自动检测的步骤,示例代码如下:
不过这个方案只是权宜之计,不一定能完美适配RAR5的所有特性,还是升级库最靠谱。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); // 执行后续的解压或读取操作 }
内容的提问来源于stack exchange,提问作者Flai




