C#中自带的ZIP解压缩组件功能太过单一,不能过滤特定的文件如Cache、log、dist这些资源文件路径都是不需要被压缩的,开源软件SharpZipLib可以实现压缩包二次添加删除等诸多功能。

压缩文件

# 过滤规则 使用';'号隔开
private string zipFilter = "+Cache;+Logs";

FastZip fz = new FastZip();
# 需要压缩的文件路径
string sourceDirectory = Environment.ExpandEnvironmentVariables("%AppData%\\Data");

# 压缩文件的路径
string compressedFilePath = Environment.ExpandEnvironmentVariables("%AppData%" + computerName + ".zip");

# 第三个参数是否递归文件夹
# 第四个参数为过滤规则 string
fz.CreateZip(compressedFilePath, sourceDirectory, true, zipFilter);
  • 只压缩指定的文件夹或文件
    使用+(保留)例如:+File;+Doc;\.txt$; 只压缩sourceDirectory路径下的FileDoctxt文件夹(文件)。
  • 排除指定的文件件或文件夹
    使用-(排除)例如:-Cache;+Logs;\.dat$; 排除sourceDirectory路径下的CacheLogs.dat文件夹(文件)。

解压文件

FastZip zip = new FastZip();
# compressedFilePath 为压缩文件存放路径
# sourceDirectory 为压缩文件解压的路径
# 第三个参数过滤器(同上)
zip.ExtractZip(compressedFilePath, sourceDirectory, null);
最后修改:2024 年 04 月 08 日
如果觉得我的文章对你有用,请随意赞赏