工具下载

压缩为7z: 调用zip()函数

7z解压缩: 调用unzip()函数

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;namespace _7zTool
{class _7zTool{#region 7z文件压缩、解压,接口逻辑/// <summary>/// 根据给的文件参数,自动进行压缩或解压缩操作/// </summary>public static void Process(String[] files){Init();if (asm != null){object[] args = new object[] { files };RunStatic(asm, "Sci7z._7zTool", "Process", args);}}/// <summary>/// 对文件目录DirPath中的文件进行压缩,压缩为zipPath/// </summary>public static bool zipDir(string DirPath, string zipPath = null, bool dependsDelet = false){Init();if (asm != null){object[] args = new object[] { DirPath, zipPath, dependsDelet };Object obj = RunStatic(asm, "Sci7z._7zTool", "zipDir", args);return Boolean.Parse(obj.ToString());}return false;}/// <summary>/// 对所有files文件进行压缩,压缩为zipPath/// </summary>public static bool zip(string[] files, string zipPath = null, bool dependsDelet = false){Init();if (asm != null){object[] args = new object[] { files, zipPath, dependsDelet };Object obj = RunStatic(asm, "Sci7z._7zTool", "zip", args);return Boolean.Parse(obj.ToString());}return false;}/// <summary>/// 解压缩文件zipPath至目录DirPath/// </summary>public static bool unzip(String zipPath, String DirPath = null, bool dependsDelet = false){Init();if (asm != null){object[] args = new object[] { zipPath, DirPath, dependsDelet };Object obj = RunStatic(asm, "Sci7z._7zTool", "unzip", args);return Boolean.Parse(obj.ToString());}return false;}#endregion#region SciZip插件反射调用逻辑/// <summary>/// 调用assembly中的静态方法/// </summary>private static object RunStatic(Assembly assembly, string classFullName, string methodName, object[] args){if (assembly == null) return null;Type type = assembly.GetType(classFullName, true, true);//object[] arg = new object[] { "参数1", "参数2" };object tmp = type.InvokeMember(methodName, BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Static, null, null, args);return tmp;}private static Assembly asm = null;/// <summary>/// 初始化/// </summary>private static void Init(){if (asm == null){byte[] data = GetByte();if (data.Length > 0) asm = Assembly.Load(data);//if (asm != null)//{//    object[] args = new object[] { };//    RunStatic(asm, "SciZip.DllTool", "LoadResourceDll", args);//}}}#endregion#region Sci7z插件private static string ServerAddress = "www.scimence.cn:8003";private static byte[] GetByte(){string data_run = getData("http://" + ServerAddress + "/src/scitools/DATA/Sci7z.data");byte[] bytes = ToBytes(data_run);return bytes;}/// <summary>  /// 解析字符串为Bytes数组/// </summary>  private static byte[] ToBytes(string data){data = restore(data);byte[] B = new byte[data.Length / 2];char[] C = data.ToCharArray();for (int i = 0; i < C.Length; i += 2){byte b = ToByte(C[i], C[i + 1]);B[i / 2] = b;}return B;}/// <summary>  /// 每两个字母还原为一个字节  /// </summary>  private static byte ToByte(char a1, char a2){return (byte)((a1 - 'a') * 16 + (a2 - 'a'));}/// <summary>/// 从指定dataUrl载入数据,并在本地缓存/// </summary>/// <param name="dataUrl"></param>/// <returns></returns>private static string getData(string dataUrl){string data = "";try{string fileName = dataUrl.Substring(dataUrl.LastIndexOf("/") + 1);string localPath = AppDomain.CurrentDomain.BaseDirectory + fileName;// 优先从本地载入数据if (File.Exists(localPath)){long lastModify = new FileInfo(localPath).LastWriteTime.Ticks;long secondSpace = (DateTime.Now.Ticks - lastModify) / 10000000;bool networkAvaliable = System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable();if (secondSpace > 86400 * 90 && networkAvaliable)    // 超出90天,删除缓存文件{File.Delete(localPath);}else{data = File.ReadAllText(localPath).Trim();if (data.Trim().Equals("")) File.Delete(localPath);}}// 若本地无数据,则从网址加载if (!File.Exists(localPath)){System.Net.WebClient client = new System.Net.WebClient();data = client.DownloadString(dataUrl).Trim();File.WriteAllText(localPath, data);     // 本地缓存}}catch (Exception) { }return data;}/// <summary>/// 还原为原有串信息/// "enfkja4da6p4a4lia14ea11" -> /// "enfkjaaaadaaaaaaaeaaaaaappppaaaaliaaaaaaaaaaaaaaeaaaaaaaaaaa"/// </summary>/// <param name="shrinkStr"></param>/// <returns></returns>private static string restore(string shrinkStr){char C = ' ';StringBuilder builder = new StringBuilder();string numStr = "";foreach (char c in shrinkStr){if ('a' <= c && c <= 'z'){if (!numStr.Equals("")){int n = Int32.Parse(numStr);while (n-- > 1) builder.Append(C.ToString());numStr = "";}builder.Append(c.ToString());C = c;}else if ('0' <= c && c <= '9'){numStr += c.ToString();}}if ('a' <= C && C <= 'z'){if (!numStr.Equals("")){int n = Int32.Parse(numStr);while (n-- > 1) builder.Append(C.ToString());numStr = "";}}return builder.ToString();}#endregion}
}

7z文件压缩、解压 (7zTool.exe)相关推荐

  1. C#中使用7Z进行压缩解压

    C#中使用7Z进行压缩解压 SevenZipSharp相关文档下载地址: http://sevenzipsharp.codeplex.com/releases/view/51254 1. 解决方案中添 ...

  2. Linux常用文件压缩/解压命令格式大全(tar、gzip、bzip2、zip、compress、cpio、compress、dd)建议收藏

    Linux常用文件压缩/解压命令格式大全 1. tar 2. gzip 3. bzip2 4. zip 5. compress 6. cpio 7.dd 1. tar 打包备份后的文件包缀:.tar ...

  3. linux jar和zip,Linux命令———zip和jar文件压缩解压

    Linux命令---zip和jar文件压缩解压 (1)ubuntu 使用unzip和zip压缩文件 1.功能作用:解压缩zip文件 2.位置:/usr/bin/unzip 3.格式用法:unzip [ ...

  4. python压缩文件tar_python 实现tar文件压缩解压的实例详解

    python 实现tar文件压缩解压的实例详解 python 实现tar文件压缩解压的实例详解 压缩文件: import tarfile import os def tar(fname): t = t ...

  5. Qt基于QuaZIP实现文件压缩/解压(Linux下)

    Qt基于QuaZIP实现文件压缩/解压(Linux下) 一.工具准备 二.编译zlib 1.下载zlib源码 2.配置 3.编译与安装 三.编译QuaZIP 1.下载QuaZIP源码 2.将zlib库 ...

  6. Qt基于QuaZIP实现文件压缩/解压(Win下)

    Qt基于QuaZIP实现文件压缩/解压(Win下) 一.工具准备 二.编译zlib 1.下载zlib源码 2.生成VS工程文件 3.使用VS进行编译 三.编译QuaZIP 1.下载QuaZIP源码 2 ...

  7. linux压缩文件恢复,Linux文件压缩解压命令

    Linux文件压缩解压命令QV7南京数据恢复-西数科技: 硬盘/手机/SSD数据恢复专家. 025-83608636 18913825606 tar功能:文件压缩解压QV7南京数据恢复-西数科技: 硬 ...

  8. 【文件压缩解压工具类-含密码】

    文件压缩解压工具类-含密码 一.zip4j简介 二.zip4j工具类使用步骤 1.添加maven依赖 2.工具类代码 3.调用测试 三.结语 一.zip4j简介 zip4j功能比较强大,支持加密.解密 ...

  9. Linux 系统下文件压缩解压

    Linux 系统压缩&解压文件 压缩永远是针对于一个独立文件进行的,一个文件夹(某目录下文件)想要进行压缩首先要进行打包,打包成一个文件,所以在 Windows 下常说的压缩是打包与压缩的总称 ...

最新文章

  1. 深度分析define预处理指令
  2. vim 有用命令-20190217
  3. 微信小程序-智能机器人
  4. 模型服务:流处理与使用Java,gRPC,Apache Kafka,TensorFlow的RPC / REST
  5. QT中PRO文件写法的详细介绍
  6. html table vtop,PART2HTML语言.doc
  7. protocol buffers使用说明
  8. UpdatePanel的内容中出现自定义多语言运行异常
  9. Git和Github详细入门教程
  10. 双三次插值c语言源代码,双三次插值原理及MATLAB源码实现
  11. 机器学习系列2---经验风险最小化原则和结构风险最小化原则与VC维问题
  12. vue打包报错error in ./node_modules/view-design/dist/styles/fonts/ionicons.svg?v=3.0.0
  13. 4.6.2 IPv6的地址
  14. 2021“设计+”珠宝首饰创新设计展开幕
  15. 【转】MUD教程--巫师入门教程4
  16. 【财富空间】陈春花:向内打破,为成长赋能;面对全球市场,要有全球化思维、本土化行动
  17. 软件测试职业规划:发展方向多元化
  18. 计算机专业是朝阳还是夕阳?
  19. 外贸ERP系统的操作有什么特点?中小企业适合选择吗?
  20. 深入理解java虚拟机第3版 周志明

热门文章

  1. js开根号_在JavaScript中使用开平方根的sqrt()方法
  2. ubuntu下的beyond compare破解
  3. 简述php的特点,PHP语言有哪些优势和特点(三)
  4. Html+Css+Js五星好评(完整代码+详解)
  5. HTTP请求返回状态码详解
  6. 5,15-二(3,4,5-三(三丙氧苯基)卟啉(BTPPP),[5,15-二乙炔基-10,20-二(3,4,5-三(十六烷氧基)苯基)卟啉]锌(DBTCPP-Zn)齐岳生物供应
  7. Java使用RSA算法实现安全登录
  8. js破解 零度代理ip
  9. JavaScript的json和Array及Array数组的使用方法
  10. STM32之ADC的理解及运用