别的1个是文本进一步大,占用存储空间,涉及压缩存储的难题,本文对文本收缩的二种形式作简单总计。

行事中恰恰完结壹个xx监控服务的付出职责,才疏学浅,仅仅是归纳的兑现,以后对开发中相遇的多少个难题做一下规整。

考虑最大压缩比,将文件减弱成 .7z 格式。

SevenZipSharp.dll

SevenZip夏普是Codeplex的开源项目,使用7-zip的library,需求7z.dll和SevenZip夏普.dll,网上直接下载即可。

  • SevenZipSharp.dll要求加上引用;
  • 7z.dll无法直接引用,需求钦赐其路径;

图片 1图片 2

 1 using SevenZip;
 2 
 3 public static void CompressWithSevenZipCompressor(string FilePath, string zipFilepath)
 4 {
 5     // 7z.dll不能直接引用,必须指定路径
 6     SevenZipCompressor.SetLibraryPath("7z.dll");
 7     var zip = new SevenZipCompressor();
 8     zip.CompressionLevel = CompressionLevel.High;  // 压缩比
 9     zip.ArchiveFormat = OutArchiveFormat.SevenZip; // 压缩格式
10     // zip.CompressionMethod = SevenZip.CompressionMethod.Lzma;  // 压缩算法
11     // zip.CompressionMode = SevenZip.CompressionMode.Create;    // 压缩模式
12     // zip.ZipEncryptionMethod = SevenZip.ZipEncryptionMethod.Aes256;  // 压缩加密算法
13 
14             
15     // 普通压缩方法:文件带有文件夹,使用不方便
16     zip.CompressFiles(zipFilepath, FilePath);  
17     // 字典集压缩方法:推荐
18     Dictionary<string, string> myDic = new Dictionary<string, string>();
19     myDic.Add(FileName, FilePath);
20     zip.CompressFileDictionary(myDic, zipFilepath);
21 }

SevenZipCompressor

若压缩五个公文,传参 List<string> FilePaths 即可。

 


本文只不难介绍上述2种办法,7z.exe格局压缩速度较快

其余可参照:【原创】.NET开源压缩组件介绍与入门

多少个是拔取XML文件记录任务音信,XML文件精简清晰、生成和分析操作便利,但是会波及到文件进一步大的动静:

7z.exe

相关工具下载:http://www.cnblogs.com/rentiansheng/archive/2011/09/15/2177716.html

务必将7z.dll、7z.exe、7zFM.exe、7zG.exe放入到工程项目标履行目录下。

图片 3图片 4

 1 public class SevenZipHelper
 2     {
 3         /// 7z.exe启动路径
 4         private static string _InstallPath_7zip;
 5 
 6         /// startDirectory:执行目录
 7         public static void Init(string startDirectory)
 8         {
 9             _InstallPath_7zip = startDirectory + "\\7z.exe";
10         }
11 
12         /// 压缩、解压缩辅助调用函数
13         /// <param name="Arguments">待执行命令</param>
14         private static bool CompressHelper(string Arguments)
15         {
16             using (Process process = new Process())
17             {
18                 try
19                 {                   
20                     process.StartInfo.FileName = _InstallPath_7zip; // 待启动进程名称                   
21                     process.StartInfo.Arguments = Arguments;        // 命令配置                   
22                     process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;  //隐藏DOS窗口
23                     process.Start(); 
24                     process.WaitForExit();                     
25                     process.Close();
26                 }
27                 catch (Exception ex)
28                 {
29                     Logger.LogWarn(null, ex.Message);
30                     return false;
31                 }
32                 return true;
33             }
34         }
35 
36         /// 压缩文件
37         /// <param name="InFilePath">待压缩文件路径</param>
38         /// <param name="OutZipFilePath">压缩文件输出路径</param>
39         string _Arguments = "a -t7z " + "\"" + OutZipFilePath + "\"" + " " + "\"" + InFilePath + "\"" + "";
40         
41         /// 压缩文件夹
42         /// <param name="InDirectory">待压缩文件夹</param>
43         /// <param name="OutZipFilePath">压缩文件输出路径</param>
44         string _Arguments = "a -t7z " + "\"" + OutZipFilePath + "\"" + " " + "\"" + InDirectory + "\"" + " -r";
45 
46         
47         /// 压缩多个文件
48         /// <param name="FileDirectory">待压缩文件所在目录</param>
49         /// <param name="InFileNames">待压缩文件名字</param>
50         /// <param name="OutZipFilePath">压缩文件输出路径</param>
51         string _Arguments = string.Empty;
52         foreach (string inFileName in InFileNames)
53         {
54             string inFilePath = FileDirectory + inFileName;
55             _Arguments = "a -t7z " + "\"" + OutZipFilePath + "\"" + " " + "\"" + inFilePath + "\"" + "";
56         }
57         
58         /// 压缩多个文件夹 同理 压缩多个文件
59         
60         /// 解压缩
61         /// </summary>
62         /// <param name="InZipFilePath">压缩文件路径</param>
63         /// <param name="OutDirectory">解压缩后文件输出目录</param>
64         string _Arguments = " x " + "\"" + InZipFilePath + "\"" + " -o" + "\"" + OutDirectory + "\"" + " -r ";            
65     }

SevenZipHelper

在意其中多少个难题:

  •  路径最好不要包涵空格;若包蕴空格,应该加引号:“\”” + strPath + “\””
  •  解压缩中,-o代表输出目录,其与目录路径之间一贯不空格
  •  解压既可以输出到当前目录,也可以输出到指定文件夹,只要改变
    OutDirectory 即可

参考

相关文章

网站地图xml地图