///
/// 文件压缩类
///
public class ZipHelper
{
///
/// 单文件压缩成ZIP
///
///
源文件路径
///
ZIP文件路径
///
ZIP文件名:相对路径
///
public static void SimpleFileZip(string fileSource, string fileOut, string fileName)
{
using (FileStream zipFileToOpen = new FileStream(fileOut, FileMode.OpenOrCreate))
{
using (ZipArchive archive = new ZipArchive(zipFileToOpen, ZipArchiveMode.Update))
{
fileName = fileName.Trim(Path.DirectorySeparatorChar);
ZipFile(fileSource, fileName, archive);
}
}
}
///
/// 多文件压缩成ZIP
///
///
源文件路径
///
ZIP文件路径
///
ZIP文件名 源文件 压缩文件相对目录 压缩文件包 【官方QQ一群:跟着阿笨一起玩NET(已满)】:422315558 【官方QQ二群:跟着阿笨一起玩C#(已满)】:574187616 【官方QQ三群:跟着阿笨一起玩ASP.NET(已满)】:967920586 【官方QQ四群:Asp.Net Core跨平台技术开发(可加入)】:829227829 【官方QQ五群:.NET Core跨平台开发技术(可加入)】:647639415 【网易云课堂】:https://study.163.com/provider/2544628/index.htm?share=2&shareId=2544628 【腾讯课堂】:https://abennet.ke.qq.com 【51CTO学院】:https://edu.51cto.com/sd/66c64 【微信公众号】:http://dwz.cn/ABenNET
///
public static void FilesZip(List
{
using (FileStream zipFileToOpen = new FileStream(fileOut, FileMode.OpenOrCreate))
{
using (ZipArchive archive = new ZipArchive(zipFileToOpen, ZipArchiveMode.Update))
{
foreach (var file in fileSources)
{
string fileName = file.Replace(AppConsts.ServerUpdateFile + Path.DirectorySeparatorChar, "");
ZipFile(file, fileName, archive);
}
}
}
}
///
/// 压缩指定文件夹
///
///
///
public static void DirectoryZip(string sourceDirectory, string fileOut)
{
string[] allFiles = Directory.GetFiles(sourceDirectory, "", SearchOption.AllDirectories);
using (FileStream zipFileToOpen = new FileStream(fileOut, FileMode.OpenOrCreate))
{
using (ZipArchive archive = new ZipArchive(zipFileToOpen, ZipArchiveMode.Update))
{
foreach (var file in allFiles)
{
//获取压缩文件相对目录
string fileName = file.Replace(sourceDirectory + Path.DirectorySeparatorChar, "");
ZipFile(file, fileName, archive);
}
}
}
}
///
/// 解压文件到指定目录
///
///
///
public static void UnZip(string upZipDirPath, string zipPath)
{
if (!Directory.Exists(upZipDirPath))
Directory.CreateDirectory(upZipDirPath);
using (FileStream zipFileToOpen = new FileStream(zipPath, FileMode.Open))
{
using (ZipArchive archive = new ZipArchive(zipFileToOpen, ZipArchiveMode.Read))
{
archive.ExtractToDirectory(upZipDirPath);
}
}
}
///
/// 生成压缩文件
///
///
///
///
private static void ZipFile(string fileSource, string fileName, ZipArchive archive)
{
ZipArchiveEntry readMeEntry = archive.CreateEntry(fileName);
readMeEntry.LastWriteTime = File.GetLastWriteTime(fileSource);
using (Stream stream = readMeEntry.Open())
{
byte[] bytes = File.ReadAllBytes(fileSource);
stream.Write(bytes, 0, bytes.Length);
}
}
}
作者:阿笨