using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Ionic.Zip;
using System.IO;

namespace IFCA.BL.CM
{
    /// <summary> 
    /// Zip压缩文件辅助类(封装Ionic.Zip) 
    /// </summary> 
    public static class FileCompressZipHelper
    {     
        /// <summary> 
        /// 压缩指定文件或目录 
        /// </summary> 
        /// <param name="fileOrDirectoryName">要进行压缩的文件或目录名称</param> 
        /// <returns>生成的压缩文件名</returns> 
        public static string Compress(string fileOrDirectoryName)
        {
            string zipPath = _GetZipPath(fileOrDirectoryName);
            Compress(fileOrDirectoryName, zipPath);
            return zipPath;
        }

/// <summary> 
        /// 压缩指定文件或目录 
        /// </summary> 
        /// <param name="fileOrDirectoryName">要进行压缩的文件或目录名称</param> 
        /// <param name="zipPath">生成的压缩文件路径</param> 
        public static void Compress(string fileOrDirectoryName, string zipPath)
        {
            using (ZipFile zip = new ZipFile(Encoding.GetEncoding("utf-8")))
            {
                zip.AddItem(fileOrDirectoryName, "");
                zip.Save(zipPath);
            }
        }

/// <summary> 
        /// 分卷压缩指定文件或目录 
        /// </summary> 
        /// <param name="fileOrDirectoryName">要进行压缩的文件或目录名称</param> 
        /// <param name="segmentSize">分卷大小(MB)</param> 
        public static void Compress(string fileOrDirectoryName, int segmentSize)
        {
            string zipPath = _GetZipPath(fileOrDirectoryName);
            Compress(fileOrDirectoryName, zipPath, ZipDataUnit.MB, segmentSize);
        }

/// <summary> 
        /// 分卷压缩指定文件或目录 
        /// </summary> 
        /// <param name="fileOrDirectoryName">要进行压缩的文件或目录名称</param> 
        /// <param name="zipPath">生成的压缩文件路径</param> 
        /// <param name="dataUnit">分卷数据单位</param> 
        /// <param name="segmentSize">分卷大小</param> 
        public static void Compress(string fileOrDirectoryName, string zipPath, ZipDataUnit dataUnit, int segmentSize)
        {
            using (ZipFile zip = new ZipFile(Encoding.GetEncoding("utf-8")))
            {
                zip.MaxOutputSegmentSize = (int)dataUnit * segmentSize;
                zip.AddItem(fileOrDirectoryName, "");
                zip.Save(zipPath);
            }
        }
        /// <summary>
        /// 获取对应的文件
        /// </summary>
        /// <param name="path">路径</param>
        /// <returns></returns>
        private static string _GetZipPath(string path)
        {
            string directory = Path.GetDirectoryName(path);
            if (string.IsNullOrWhiteSpace(directory)) directory = Path.GetPathRoot(path);
            string fileName = Path.GetFileName(path);
            string zipFileName = null;
            //文件路径 
            if (!string.IsNullOrWhiteSpace(fileName))
            {
                zipFileName = Path.ChangeExtension(fileName, ".zip");
            }
            else
            {
                zipFileName = directory.Split('\\').Last();
                if (string.IsNullOrEmpty(zipFileName))
                {
                    zipFileName = "未命名";
                }
                else
                {
                    directory = directory.Replace(zipFileName, "");
                }
                zipFileName = ".zip";
            }

return Path.Combine(directory, zipFileName);
        }
    }
    /// <summary> 
    /// 分卷数据单位 
    /// </summary> 
    public enum ZipDataUnit
    {
        /// <summary> 
        /// 1024字节 
        /// </summary> 
        KB = 1024,

/// <summary> 
        /// 1024 * 1024字节 
        /// </summary> 
        MB = 1024 * 1024,

/// <summary> 
        /// 1024 * 1024 * 1024字节 
        /// </summary> 
        GB = 1024 * 1024 * 1024
    }
}

------》调用示例

#region 示例
        using (DataAccessAdapter adpter = new DataAccessAdapter())
        {
            LinqMetaData linq = new LinqMetaData(adp);
            var Documentpath = linq.CfDocument.Where(c => c.Documentid == 3087).Select(c => c.Documentpath).FirstOrDefault().ToStr();//示例 获取对应的文件
            var UNC_PATH = System.Configuration.ConfigurationManager.AppSettings["UNC_Path"];
            var fileOrDirectoryName = System.IO.Path.Combine(UNC_PATH, Documentpath);
            IFCA.BL.CM.FileCompressZipHelper.Compress(fileOrDirectoryName, 2);//分卷压缩     【默认压缩到 被压缩的目录】
            //var zipPath= System.IO.Path.Combine("C:\\temp\\", "分卷压缩"+ ".zip");
            //IFCA.BL.CM.FileCompressZipHelper.Compress(fileOrDirectoryName,zipPath, IFCA.BL.CM.ZipDataUnit.MB,5);//分卷压缩 【可以指定压缩目录、名称】
        }
        #endregion

分卷压缩 C#代码实现相关推荐

  1. java代码实现分卷压缩成多个文件

    您可以使用 Java 中的 ZipOutputStream 类来实现分卷压缩成多个文件的功能.以下是一个示例代码,用于将一个大的文件分成多个大小相等的文件进行压缩: import java.io.*; ...

  2. java 分卷压缩_Apache Commons Compress介绍-Zip压缩解压

    Zip格式应该是最出名的压缩格式之一了,zlib.gzip这些辈分很老的库大家应该都用过,甚至大部分其他格式的压缩库,都可以处理zip格式.Commons Compress当然也少补了对zip格式的支 ...

  3. winrar分卷压缩_WinRAR该让位了?免费开源的压缩软件横空出世

    有压缩软件可谓是装机必备的软件了,然而你是否真的有选对压缩软件?很多朋友都会用到国产的一些压缩软件,但这其实可能并非是明智之选. 众所周知,如果某种类软件存在开源方案,那么商业公司往往会一拥而上,用开 ...

  4. 文件分卷压缩和压缩的区别是什么

    分卷压缩是一种非常简单的压缩技巧,能够轻易的将大型的文件分割成几个小的部分保存,是一种非常不错文件存储方式.分卷压缩是拆分压缩文件的一部分,通常分卷压缩是在将大型的压缩文件保存到数个磁盘或是可移动磁盘 ...

  5. Linux oracle数据库自动备份自动压缩脚本代码

    Linux oracle数据库自动备份自动压缩脚本代码 Linux oracle数据库备份完成后可以自动压缩脚本代码. 复制代码代码如下: #!/bin/bash #backup.sh #edit: ...

  6. 分卷压缩并解压 (线上服务器如何把很大的数据拷贝到另外一台服务器上)

    用法:split [选项]... [输入 [前缀]] 选项: -a, --suffix-length=N 指定后缀长度为N (默认为2) -b, --bytes=大小 指定每个输出文件的字节大小 -C ...

  7. [Issue Fixed]-分卷压缩解压:gzip: stdin: not in gzip format

    在解压一份MTK厂商给的code时,发现怎么都解压不了 test@test-pc:~/workspace/program/mtk-q$ tar xvzf ALPS-MP-Q0.MP1-V4.4.PRE ...

  8. zipfile不能解压分卷压缩的文件

    要解压*.zip,*.z01,*.z02等分卷压缩文件,要首先把所有的分卷文件压缩到一个压缩文件,在解压.

  9. java 代码压缩javascript_利用Java来压缩 JavaScript 代码详解

    通过移除空行和注释来压缩 JavaScript 代码 /** * This file is part of the Echo Web Application Framework (hereinafte ...

  10. java 代码压缩javascript_通过Java压缩JavaScript代码实例分享

    通过移除空行和注释来压缩 javascript 代码 /** * this file is part of the echo web application framework (hereinafte ...

最新文章

  1. .重要开源协定的比较以及区别
  2. python标准类型内建模块_Python内建模块struct实例详解
  3. Struts2与Spring、Hibernate三者整合的过程示例
  4. (11) ejb学习: Jpa事务管理类型 container 和 bean
  5. Python02期(北京)课程笔记索引
  6. 常量 数组 函数 枚举 结构体与指针
  7. 荷兰国旗问题+快速排序
  8. 职称计算机word中文字处理,职称计算机考试:Word97中文字处理
  9. PHP学习线路图:四个阶段
  10. USACO:2.2.1 Preface Numbering 序言页码
  11. 教你用python画一个可爱皮卡丘!
  12. MFC几种给对话框添加背景图的方法
  13. NLP 中文分词-双向匹配算法(理论+Python实现)
  14. 计算机无法自动排列,如何设置Excel表不能自动排序
  15. 我是如何从测试转为产品的
  16. Unity移动应用如何在Bugly上查看崩溃堆栈
  17. Webkitx VHX ActiveX VLC 媒体播放器
  18. 网吧电脑怎么调试java_调试网吧计费
  19. css3 实现圆角方法,CSS3 border-radius圆角的实现方法及用法详解
  20. Maven使用教程和开发经验总结

热门文章

  1. 第8节 破解系统密码—利用win7漏洞和PE系统破解密码
  2. es java 模糊查询_java使用elasticsearch进行模糊查询之must使用-项目中实际使用
  3. 深度学习目标检测模型的评价标准-AP与mAP
  4. java开发高薪工程师,Java开发工程师如何获得高薪
  5. win10把中文用户名改为英文用户名的两种方法
  6. linux drm 写屏幕,Linux DRM Graphic 显示简单介绍
  7. 20个高效阅读小技巧
  8. short转换byte
  9. 关于简单的打地鼠游戏开发总结
  10. winword.exe应用程序错误0xc0000142