工具下载

压缩: 调用zip()函数、

解压缩:调用unzip()函数

添加ZipTool类至应用中,即可实现文件压缩、解压逻辑。

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;namespace ZipTool
{/// <summary>/// 文件压缩解压,接口逻辑/// </summary>public class ZipTool{#region 文件压缩、解压,接口逻辑/// <summary>/// 根据给的文件参数,自动进行压缩或解压缩操作/// </summary>public static void Process(String[] files, String Password = null){Init();if (asm != null){object[] args = new object[] { files, Password };RunStatic(asm, "SciZip.ZipTool", "Process", args);}}/// <summary>/// 压缩所有文件files为zip/// </summary>public static bool zipFiles(String[] files, String Password = null, String[] ignoreNames = null){Init();if (asm != null){object[] args = new object[] { files, Password, ignoreNames };Object obj = RunStatic(asm, "SciZip.ZipTool", "zipFiles", args);return Boolean.Parse(obj.ToString());}return false;}/// <summary>/// 压缩指定的文件或文件夹为zip/// </summary>public static bool zip(String file, String Password = null, String[] ignoreNames = null){Init();if (asm != null){object[] args = new object[] { file, Password, ignoreNames };Object obj = RunStatic(asm, "SciZip.ZipTool", "zip", args);return Boolean.Parse(obj.ToString());}return false;}/// <summary>/// 压缩所有文件files,为压缩文件zipFile, 以相对于BaseDir的路径构建压缩文件子目录,ignoreNames指定要忽略的文件或目录/// </summary>public static bool zip(String zipPath, String BaseDir, String[] files, String Password = null, String[] ignoreNames = null){Init();if (asm != null){object[] args = new object[] { zipPath, BaseDir, files, Password, ignoreNames };Object obj = RunStatic(asm, "SciZip.ZipTool", "zip", args);return Boolean.Parse(obj.ToString());}return false;}/// <summary>/// 解压文件 到指定的路径,可通过targeFileNames指定解压特定的文件/// </summary>public static bool unzip(String zipPath, String targetPath = null, String Password = null, String[] targeFileNames = null, String EndWithStr = ""){Init();if (asm != null){object[] args = new object[] { zipPath, targetPath, Password, targeFileNames, EndWithStr };Object obj = RunStatic(asm, "SciZip.ZipTool", "unzip", args);return Boolean.Parse(obj.ToString());}return false;}/// <summary>/// 解压文件 到指定的路径,可通过targeFileNames指定解压特定的文件/// </summary>public static List<String> getEntryPath(String zipPath, String Password = null, String[] targeFileNames = null, String EndWithStr = ""){Init();if (asm != null){object[] args = new object[] { zipPath, Password, targeFileNames, EndWithStr };Object obj = RunStatic(asm, "SciZip.ZipTool", "getEntryPath", args);return (List<String>)obj;}return new List<String>();}#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 SciZip插件private static string ServerAddress = "www.scimence.cn:8003";private static byte[] GetByte(){string data_run = getData("http://" + ServerAddress + "/src/scitools/DATA/SciZip.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}
}

文件压缩、解压 (ZipTool.exe)相关推荐

  1. 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 ...

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

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

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

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

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

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

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

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

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

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

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

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

  8. 【PC工具】文件压缩解压工具winrar解压缩装机必备软件,winRAR5.70免费无广告

    微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 今天分享一个常用的压缩解压工具winrar. 为啥要搞这个无广告版呢(废话),总之网上 ...

  9. linux 如何打包分区文件,Linux基础------文件打包解包---tar命令,文件压缩解压---命令gzip,vim编辑器创建和编辑正文件,磁盘分区/格式化,软/硬链接...

    作业一: 1)将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖) cat /etc/passwd /etc/group > /1.txt 2)将用户信息数据库文件和用户 ...

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

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

最新文章

  1. python调用c++总结
  2. 在Filter 无法跳转地址
  3. Java Review - 并发编程_ThreadPoolExecutor原理源码剖析
  4. maven 插件在线安装
  5. boost::math::catmull_rom用法的测试程序
  6. BZOJ1856:[SCOI2010]字符串
  7. ADO.NET 如何读取 Excel (下)
  8. Atitit 代理CGLIB 动态代理 AspectJ静态代理区别
  9. Rails2.2新特性:本地化与国际化
  10. 洛谷P1125 笨小猴 题解
  11. idea 导入的模块 右下角没有蓝色方块
  12. vscode能写winform窗体吗_vs code 写C#心得
  13. php微信生成签名_微信APP支付服务端PHP生成签名
  14. Spark 调优技巧总结
  15. 怎么能学会做买卖步骤是什么(想做买卖赚钱应该先从什么做起)
  16. 诗经 - 小雅 - 采芑
  17. 杂谈:饮水思源与Java仍在但Sun已死
  18. linux怎么在sdb创建100g盘,linux新磁盘分区操作
  19. 项目管理类,PMP和软考的区别
  20. 【Galois工具开发之路】关于类的重新装载思路

热门文章

  1. 第十八届全国大学智能汽车竞赛报名信息统计:西部赛区报名队伍
  2. activedns 实现动态ip绑定域名
  3. DDD进阶_DDD分层架构、整洁架构、六边形架构
  4. DB2按照字段的指定顺序排序
  5. 【Discuz】移除移动端论坛底部的 标准版 | 触屏版 | 电脑版 | 客户端
  6. contentType几种类型
  7. 艾司博讯:拼多多客服怎么提高回复率
  8. ParameterizedType 使用方法
  9. ArcGIS:如何利用模型构建器(ModelBuilder)解决基于人口和已有商业点的商业连锁店选址问题?
  10. 关于OOP设计模式简介