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
路径下的File
、Doc
和txt
文件夹(文件)。 - 排除指定的文件件或文件夹
使用-
(排除)例如:-Cache;+Logs;\.dat$;
排除sourceDirectory
路径下的Cache
、Logs
和.dat
文件夹(文件)。
解压文件
FastZip zip = new FastZip();
# compressedFilePath 为压缩文件存放路径
# sourceDirectory 为压缩文件解压的路径
# 第三个参数过滤器(同上)
zip.ExtractZip(compressedFilePath, sourceDirectory, null);