利用ICSharpCode压缩打包文件

因为项目需要打包文件,就在同事的建议下用ICSharpCode写了个打包函数.ICSharpCode的介绍就不说了.具体请到官方网站 http://www.icsharpcode.net/ 上了解.

首先引用ICSharpCode.SharpZipLib.dll,没有在这里下载:http://files.cnblogs.com/KenBlove/ICSharpCode.SharpZipLib.rar

代码实现多文件,自定义文件,整目录打包等功能.好了..奉上代码:

压缩打包代码

/// <summary>
    /// Zips the specified zip path.
    /// </summary>
    /// <param name="strZipPath">The zip path.</param>
    /// <param name="strZipTopDirectoryPath">The zip top directory path.</param>
    /// <param name="intZipLevel">The zip level.</param>
    /// <param name="strPassword">The password.</param>
    /// <param name="filesOrDirectoriesPaths">The files or directories paths.</param>
    /// <returns></returns>
    private bool Zip(string strZipPath, string strZipTopDirectoryPath, int intZipLevel, string strPassword, string[] filesOrDirectoriesPaths)
    {
        try
        {
            List<string> AllFilesPath = new List<string>();
            if (filesOrDirectoriesPaths.Length > 0) // get all files path
            {
                for (int i = 0; i < filesOrDirectoriesPaths.Length; i++)
                {
                    if (File.Exists(filesOrDirectoriesPaths[i]))
                    {
                        AllFilesPath.Add(filesOrDirectoriesPaths[i]);
                    }
                    else if (Directory.Exists(filesOrDirectoriesPaths[i]))
                    {
                        GetDirectoryFiles(filesOrDirectoriesPaths[i], AllFilesPath);
                    }
                }
            }
            if (AllFilesPath.Count > 0)
            {
                ZipOutputStream zipOutputStream = new ZipOutputStream(File.Create(strZipPath));
                zipOutputStream.SetLevel(intZipLevel);
                zipOutputStream.Password = strPassword;
                for (int i = 0; i < AllFilesPath.Count; i++)
                {
                    string strFile = AllFilesPath[i].ToString();
                    try
                    {
                        if (strFile.Substring(strFile.Length - 1) == "\\") //folder
                        {
                            string strFileName = strFile.Replace(strZipTopDirectoryPath, "");
                            if (strFileName.StartsWith("\\"))
                            {
                                strFileName = strFileName.Substring(1);
                            }
                            ZipEntry entry = new ZipEntry(strFileName);
                            entry.DateTime = DateTime.Now;
                            zipOutputStream.PutNextEntry(entry);
                        }
                        else //file
                        {
                            FileStream fs = File.OpenRead(strFile);
                            byte[] buffer = new byte[fs.Length];
                            fs.Read(buffer, 0, buffer.Length);
                            string strFileName = strFile.Replace(strZipTopDirectoryPath, "");
                            if (strFileName.StartsWith("\\"))
                            {
                                strFileName = strFileName.Substring(1);
                            }
                            ZipEntry entry = new ZipEntry(strFileName);
                            entry.DateTime = DateTime.Now;
                            zipOutputStream.PutNextEntry(entry);
                            zipOutputStream.Write(buffer, 0, buffer.Length);
                            fs.Close();
                            fs.Dispose();
                        }
                    }
                    catch
                    {
                        continue;
                    }
                }
                zipOutputStream.Finish();
                zipOutputStream.Close();
                return true;
            }
            else
            {
                return false;
            }
        }
        catch
        {
            return false;
        }
    }
    /// <summary>
    /// Gets the directory files.
    /// </summary>
    /// <param name="strParentDirectoryPath">The parent directory path.</param>
    /// <param name="AllFilesPath">All files path.</param>
    private void GetDirectoryFiles(string strParentDirectoryPath, List<string> AllFilesPath)
    {
        string[] files = Directory.GetFiles(strParentDirectoryPath);
        for (int i = 0; i < files.Length; i++)
        {
            AllFilesPath.Add(files[i]);
        }
        string[] directorys = Directory.GetDirectories(strParentDirectoryPath);
        for (int i = 0; i < directorys.Length; i++)
        {
            GetDirectoryFiles(directorys[i], AllFilesPath);
        }
        if (files.Length == 0 && directorys.Length == 0) //empty folder
        {
            AllFilesPath.Add(strParentDirectoryPath);
        }
    }

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索string
, length
, files
, 多文件打包
文件打包zip
icsharpcode 压缩、怎样打包压缩文件、如何将文件夹压缩打包、如何将文件压缩打包、文件怎么压缩打包,以便于您获取更多的相关知识。

时间: 2024-12-29 19:02:13

利用ICSharpCode压缩打包文件的相关文章

asp.net C#压缩打包文件例子

 /// <summary> /// 压缩和解压文件 /// </summary> public class ZipClass {     /// <summary>     /// 所有文件缓存     /// </summary>     List<string> files = new List<string>();     /// <summary>     /// 所有空目录缓存     /// </sum

360压缩文件怎么加密 360压缩打包文件加密教程

360压缩加密教程: 压缩一个文件时,在[您将创建一个压缩文件]-[加密码]按钮,然后输入密码即可. 当然除了加密压缩之外还有许多的功能了,如包括了注是呀,之后删除文件呀,压缩完成自动关机操作呀,都在这里.

Linux 压缩(打包)文件夹 tar/zip

tar 压缩方法: tar -zcvf /home/xahot.tar.gz /xahot tar -zcvf 打包后生成的文件名全路径 要打包的目录 例子:把/xahot文件夹打包后生成一个/home/xahot.tar.gz的文件. zip 压缩方法: 压缩当前的文件夹 zip -r ./xahot.zip ./* -r表示递归 zip [参数] [打包后的文件名] [打包的目录路径] 解压 unzip xahot.zip 不解释 linux zip命令的基本用法是: linux zip命令

linux的tar命令详情;linux多个文件压缩打包到一个压缩文件

可以用来压缩打包单文件.多个文件.单个目录.多个目录. Linux打包命令_tar tar命令可以用来压缩打包单文件.多个文件.单个目录.多个目录. 常用格式: 单个文件压缩打包 tar czvf my.tar.gz file1 多个文件压缩打包 tar czvf my.tar.gz file1 file2,...(file*)(也可以给file*文件mv 目录在压缩) 单个目录压缩打包 tar czvf my.tar.gz dir1 多个目录压缩打包 tar czvf my.tar.gz di

Csharp 利用ICSharpCode.SharpZipLib解壓文件

/* *http://www.koders.com/csharp/fid7241B3C8598C20BA18652B5BB5C19D220988E2D4.aspx?s=file * http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx * http://www.eggheadcafe.com/tutorials/aspnet/9ce6c242-c14c-4969-9251-af95e4cf320f/zip--unzip-f

php在线压缩打包rar并自动下载文件的例子

linux需开启zlib.下面是具体的开启方法  1. 下载安装zlib http://www.gzip.org/zlib/ 解压tar包,进入目录执行命令: ./configure && make && make install   2. 添加php扩展,命令如下: [root@Ansen zlib]# pwd /root/lnmp/php-5.3.0/ext/zlib #php源码包目录 [root@Ansen zlib]#mv config0.m4 config.m4

利用ASP技术实现文件直接上传功能

上传|上传 摘要: 本文首先比较了几种常见的文件上传技术,然后通过实例介绍了利用ASP技术直接实现文件上传的具体方法. 关键词:ASP:文件上传:二进制数据 引言 采用WEB技术实现B/S(浏览器/服务器)结构的管理系统是办公自动化的发展趋势.基于WEB技术的管理系统,由于开发周期短:与用户平台无关:易于实现交互式应用:能对信息进行快速.高效的收集.处理和发布,近几年来得到了迅速发展.而ASP技术由于其开发效率高.交互性好,安全性强等特点,逐渐成为开发管理系统的首选工具. 许多基于WEB的应用都

Windows XP利用TC快速创建文件列表

TC(Total Commander)是很多朋友都非常喜欢的一款超强资源管理工具,其实我们还可以利用TC快速创建文件列表并进行管理.例如,笔者希望获取"C:\Windows\SYSTEM32"文件夹下的所有可执行文件名,可以按照如下步骤进行: 第1步:设置显示类型 首先,请在主界面中打开C:\Windows\SYSTEM32文件夹,由于我们的目的是希望获取所有可执行文件名,因此需要在"显示→文件显示"菜单中选中"仅执行文件",这样将只列出EXE.

NSIS使用教程(安装包制作安装文件教程,如何封装打包文件) 中文版

原文:NSIS使用教程(安装包制作安装文件教程,如何封装打包文件) 中文版 nsis中文版(Nullsoft Scriptable Install System)是一个专业的开源的可以用来封闭Windows程序的实用工具,是一个开源的 Windows 系统下安装程序制作程序.nsis它功能强,源码是直接使用C语言编写而成,并且可以直接到nsis官网下载所有nsis版本,并且提供了详细的帮助文档,方便用户制作时使用.安装页面可以使用Page自定义界面.卸载页面可以配置让用户选择是否删除用户文件.系