1、引用7z.dll(区分32位、64位)、Nuget程序包管理器中下载7z.Libs、SevenZipSharp。

2、本项目引用的是64位的7z.dll。dll下载链接

byte[] files=bomFile.filestream;
byte[] streamStandard = null;
List<byte[]> streamStandard_list;Stream inStream = new MemoryStream(files);
R7z sevenz = new R7z();SevenZipExtractor extractor = new SevenZip.SevenZipExtractor(inStream);
int numn = extractor.ArchiveFileData.Count;for (int index = 0; index < numn; index++)
{
//流式解压指定文件var outStream = new MemoryStream();extractor.ExtractFile(index, outStream);if (extractor.ArchiveFileData[index].FileName.Contains("standard")){streamStandard = StreamToBytes(outStream);streamStandard_list.Add(streamStandard);}}

R7z.cs

using SevenZip;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Oppein.Quotation.QuotationTraceService.ChaiBan.Models
{public class R7z{public R7z(){var path = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "7z\\7z.dll");SevenZipBase.SetLibraryPath(path);}/// <summary>/// 压缩文件/// </summary>/// <param name="targetName">target.7z</param>/// <param name="files">xxx.txt,xxx.txt</param>/// <returns></returns>public bool CompressFiles(string targetName, params string[] files){try{var tmp = new SevenZipCompressor();tmp.ScanOnlyWritable = true;tmp.CompressFiles(targetName, files);return true;}catch (Exception){ }return false;}/// <summary>/// 加密压缩文件/// </summary>/// <param name="targetName">target.7z</param>/// <param name="files">xxx.txt,xxx.txt</param>/// <returns></returns>public bool CompressFilesEncrypted(string targetName, string password, params string[] files){try{var tmp = new SevenZipCompressor();tmp.ScanOnlyWritable = true;tmp.CompressFilesEncrypted(targetName, password, files);return true;}catch (Exception){ }return false;}/// <summary>/// 解压文件/// </summary>/// <param name="CompressFile">压缩的文件</param>/// <param name="targetAddress">解压的目标地址下</param>/// <param name="password">解密密码</param>/// <returns></returns>public bool Decompression(string CompressFile, string targetAddress, string password = ""){try{if (string.IsNullOrWhiteSpace(password)){using (var tmp = new SevenZipExtractor(CompressFile)){for (int i = 0; i < tmp.ArchiveFileData.Count; i++){tmp.ExtractFiles(targetAddress, tmp.ArchiveFileData[i].Index);}}}else{using (var tmp = new SevenZipExtractor(CompressFile, password)){for (int i = 0; i < tmp.ArchiveFileData.Count; i++){tmp.ExtractFiles(targetAddress, tmp.ArchiveFileData[i].Index);}}}}catch (Exception){ }return false;}}
}

出现的问题

1、Can not load 7-zip library or internal COM error! Message: DLL file does not exist.

说明引用的7z.dll32位、64位与当前项目不一致。需要替换dll文件

2、Invalid archive: open/read error!(7Z无效存档:打开/读取错误!)

解决方案:1)代码中加入int a = IntPtr.Size。判断 IntPtr.Size的值,如何 IntPtr.Size == 4的话,很显然是 32bit,如何 IntPtr.Size == 8说明当前是 64bit。

2)点击项目右键属性,去掉首选32位勾选项。

C# 7z解压功能及问题相关推荐

  1. 利用FME PythonCaller调用7z解压压缩包

    利用FME PythonCaller调用7z解压压缩包 一.概述 在一些项目中有时候需要对文件目录完整性进行检查,而需要检查的数据又是压缩包的形式.我们都知道FME可以直接读取压缩包里的文件,当通过F ...

  2. Asp.net 2.0 C#实现压缩/解压功能

    Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载) (一). 实现功能 对文件及目录的压缩及解压功能 (二). 运行图片示例 (三).代码 1. 压缩类   1/**//// <s ...

  3. python解压7z_python使用7z解压apk包的方法

    本文实例讲述了python使用7z解压apk包的方法.分享给大家供大家参考.具体如下: 这段代码通过shell调用7z对apk包进行解压缩 def run_shell(command, mayFree ...

  4. 7z解压crc错误_百度网盘压缩下载文件的CRC校验错误的解决方法

    转载自:http://blog.sina.com.cn/s/blog_610787990102xcnv.html 百度网盘压缩下载文件的CRC校验错误的解决方法 从百度网盘用打包压缩方式下载的文件在解 ...

  5. python解压7z压缩包_python使用7z解压软件备份文件脚本分享

    要求安装: 1.Python 2.7z解压软件 backup_2.py 代码如下: # Filename: backup_2.py "'Backup files. Version: V2, ...

  6. linux命令行中curl和wget自动解压功能对比

    在linux的终端环境下, 我们经常使用curl或是wget来快速下载网页, 其实它们之间还是有很多细微区别的, 比如http 1.1的兼容问题,  gzip解压缩功能等等. 下面是我在实践中遇到的w ...

  7. Ubuntu Linux 安装 .7z 解压和压缩文件

    安装方法: sudo apt-get install p7zip 解压文件: 7z x manager.7z -r -o /home/xx 解释如下: x 代表解压缩文件,并且是按原始目录解压(还有个 ...

  8. 用.NET 2.0压缩解压功能处理大型数据

    摘要 如果你的应用程序从未使用过压缩,那么你很幸运.而对于另一部分使用压缩的开发人员来说,好消息是,.NET 2.0如今提供了两个类来处理压缩和解压问题.本文正是想讨论何时以及如何使用这些有用的工具. ...

  9. Linux 安装 .7z 解压和压缩文件

    安装方法:     sudo apt-get install p7zip 解压文件:     7z x manager.7z -r -o /home/xx 解释如下: x 代表解压缩文件,并且是按原始 ...

最新文章

  1. 聊天机器人之语料准备
  2. 对Exchange 事件ID 9154 DSACCESS 返回 DS 通知出现的错误“0x80004005”的处理
  3. git的基本使用命令操作
  4. 计算机二级vb考试查分,全国计算机二级考试VB程序设计复习试题
  5. 11Linux服务器编程之:VFS虚拟文件系统,dup()函数和dup2()函数
  6. golang fmt格式“占位符”
  7. 一个“老”程序员的思考
  8. 精选9个不错的HTML5播放器
  9. 基于FPGA的红外遥控解码与PC串口通信
  10. struts2基础梳理(二)
  11. 移动端手势的七个事件库
  12. The Art Of Code-Beta
  13. 视频直播画质核心影响因素分析:分辨率、帧率和码率
  14. 2022.6.28 JCR最新发布(期刊影响因子)
  15. 认识 ESP-IDF-v4.3+工程结构(ESP32-C3应用调整示例)
  16. YUV420(I420)与YV12的区别,YUV420p与YUV420区别
  17. 基于 SSM 的 CRM 客户管理系统
  18. ai不同形状的拼版插件_Illustrator(AI)自动拼版脚本插件
  19. 高斯消元法的python实现
  20. 看了中国与别国的科研差距后,究竟什么才是真正的科研精神?

热门文章

  1. 前端table表格循环
  2. linux程序分析工具下载,linux 程序分析工具
  3. excel的XML映射
  4. 修复苹果iOS 原生键盘遮挡input框
  5. 360 html禁止自动填充,360极速浏览器如何停用“自动填充”功能
  6. 股票成本价买入价计算器 V1.2
  7. Zookeeper实战-分布式锁的现实
  8. php7.3到php7.4新特性
  9. 【解决问题】Qt项目不能添加新文件Files are not automatically added to the CmakeLists.text file of the CMake project.
  10. Swift - 第三方图表库Charts使用详解4(折线图3:选中点高亮、十字线样式)