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);