net/net core 压缩和解压文件类—完美支持Linux
2022/8/28 5:22:46
本文主要是介绍net/net core 压缩和解压文件类—完美支持Linux,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
/// <summary> /// 文件压缩类 /// </summary> public class ZipHelper { /// <summary> /// 单文件压缩成ZIP /// </summary> /// <param name="fileSource">源文件路径</param> /// <param name="fileOut">ZIP文件路径</param> /// <param name="fileName">ZIP文件名:相对路径</param> /// <returns></returns> 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); } } } /// <summary> /// 多文件压缩成ZIP /// </summary> /// <param name="fileSource">源文件路径</param> /// <param name="fileOut">ZIP文件路径</param> /// <param name="fileName">ZIP文件名</param> /// <returns></returns> public static void FilesZip(List<string> fileSources, string fileOut) { 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); } } } } /// <summary> /// 压缩指定文件夹 /// </summary> /// <param name="sourceDirectory"></param> /// <param name="fileOut"></param> 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); } } } } /// <summary> /// 解压文件到指定目录 /// </summary> /// <param name="upZipDirPath"></param> /// <param name="zipPath"></param> 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); } } } /// <summary> /// 生成压缩文件 /// </summary> /// <param name="fileSource">源文件</param> /// <param name="fileName">压缩文件相对目录</param> /// <param name="archive">压缩文件包</param> 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); } } }
这篇关于net/net core 压缩和解压文件类—完美支持Linux的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具