相关文章推荐
大鼻子的企鹅  ·  青沼英二称《塞尔达传说 ...·  5 月前    · 
果断的可乐  ·  C#之解决 ...·  6 月前    · 
乖乖的砖头  ·  清华大学挑战性学习课程引领学生迎难而上-清华大学·  7 月前    · 
爱旅游的红烧肉  ·  python 按行读取文件 - CSDN文库·  9 月前    · 
不爱学习的跑步机  ·  Django forms ...·  1 年前    · 
Code  ›  net/net core 压缩和解压文件类—完美支持Linux开发者社区
linux系统 linux社区 linux压缩文件夹 string类
https://cloud.tencent.com/developer/article/2123156
狂野的毛豆
10 月前
跟着阿笨一起玩NET

net/net core 压缩和解压文件类—完美支持Linux

前往小程序,Get 更优 阅读体验!
立即前往
腾讯云
开发者社区
文档 建议反馈 控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
跟着阿笨一起玩NET
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
社区首页 > 专栏 > net/net core 压缩和解压文件类—完美支持Linux

net/net core 压缩和解压文件类—完美支持Linux

作者头像
跟着阿笨一起玩NET
发布 于 2022-09-26 16:03:17
1.3K 0
发布 于 2022-09-26 16:03:17
举报
文章被收录于专栏: 跟着阿笨一起玩NET
代码语言: javascript
复制
/// <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())
 
推荐文章
大鼻子的企鹅  ·  青沼英二称《塞尔达传说 王国之泪》没有DLC计划 本体已经尽力|任天堂|dlc|游戏设计师|塞尔达传说王国之泪_网易订阅
5 月前
果断的可乐  ·  C#之解决 未处理的“System.InvalidOperationException”类型的异常出现在 System.dll中..._“system.invalidoperationexceptio
6 月前
乖乖的砖头  ·  清华大学挑战性学习课程引领学生迎难而上-清华大学
7 月前
爱旅游的红烧肉  ·  python 按行读取文件 - CSDN文库
9 月前
不爱学习的跑步机  ·  Django forms 关于select和checkbox设置初始选中值 - Q1mi - 博客园
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号