工作中刚刚完成一个xx监控服务的开发任务,才疏学浅,仅仅是简单的实现,现在对开发中遇到的几个问题做一下整理。

一个是利用XML文件记录任务信息,XML文件简洁清晰、生成和解析操作方便,但是会涉及到文件越来越大的情况:

另外一个是文件越来越大,占用存储空间,涉及压缩存储的问题,本文对文件压缩的几种方法作简单总结。

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

7z.exe

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

必须将7z.dll、7z.exe、7zFM.exe、7zG.exe放入到工程项目的执行目录下。

using SevenZip;
// SevenZipCompressor
public static void CompressWithSevenZipCompressor(string FilePath, string zipFilepath)
{
    // 7z.dll不能直接引用,必须指定路径
    SevenZipCompressor.SetLibraryPath("7z.dll");
    var zip = new SevenZipCompressor();
    zip.CompressionLevel = CompressionLevel.High;  // 压缩比
    zip.ArchiveFormat = OutArchiveFormat.SevenZip; // 压缩格式
    // zip.CompressionMethod = SevenZip.CompressionMethod.Lzma;  // 压缩算法
    // zip.CompressionMode = SevenZip.CompressionMode.Create;    // 压缩模式
    // zip.ZipEncryptionMethod = SevenZip.ZipEncryptionMethod.Aes256;  // 压缩加密算法

            
    // 普通压缩方法:文件带有文件夹,使用不方便
    zip.CompressFiles(zipFilepath, FilePath);  
    // 字典集压缩方法:推荐
    Dictionary<string, string> myDic = new Dictionary<string, string>();
    myDic.Add(FileName, FilePath);
    zip.CompressFileDictionary(myDic, zipFilepath);
}

注意其中几个问题:

  •  路径最好不要包含空格;若包含空格,应该加引号:"\"" + strPath + "\""
  •  解压缩中,-o表示输出目录,其与目录路径之间没有空格
  •  解压既可以输出到当前目录,也可以输出到指定文件夹,只要更改 OutDirectory 即可

参考

7-Zip 官方中文主页命令行压缩解压7z

SevenZipSharp.dll

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

  • SevenZipSharp.dll需要添加引用;
  • 7z.dll无法直接引用,需要指定其路径
     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 }

相关文章:

  • 2021-07-21
  • 2022-12-23
  • 2021-09-30
  • 2022-03-09
  • 2022-12-23
猜你喜欢
  • 2022-01-30
  • 2022-01-27
  • 2021-11-05
  • 2021-08-13
  • 2021-09-22
  • 2021-05-25
相关资源
相似解决方案