`
ljl_xyf
  • 浏览: 618649 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

C# 压缩和解压web空间中的所有文件

    博客分类:
  • c#
 
阅读更多

using System;
using ICSharpCode.SharpZipLib;
using ICSharpCode.SharpZipLib.Checksums;
using System.IO;
using ICSharpCode.SharpZipLib.Zip;
using System.Collections;


/// <summary>
/// Common 的摘要说明。
/// </summary>
public class commRar
{
    public commRar()
    {
        //
        // TODO: 在此处添加构造函数逻辑
        //
    }

    /// <summary>
    /// 压缩文件 http://www.my400800.cn
    /// </summary>
    /// <param name="sourceFileNames">压缩文件名称集合</param>
    /// <param name="destFileName">压缩后文件名称</param>
    /// <param name="password">密码</param>
    public static void zipFile(string path, string destFileName)
    {
        Crc32 crc = new Crc32();
        string strparpath = path;

        //定义
        System.IO.DirectoryInfo myDir = new DirectoryInfo(path);
        // 0 - store only to 9 - means best compression
        if (myDir.Exists == true)
        {
            System.IO.FileInfo[] myFileAry = myDir.GetFiles();

            ZipOutputStream s = new ZipOutputStream(File.Create(destFileName));
            s.Password = "";
            s.SetLevel(6);

            //循环提取文件夹下每一个文件,提取信息,
            foreach (FileInfo objFiles in myFileAry)
            {
                if (objFiles.FullName.IndexOf(".rar") > 0) continue;
                FileStream fs = File.OpenRead(objFiles.FullName);
                byte[] buffer = new byte[fs.Length];
                fs.Read(buffer, 0, buffer.Length);
                ZipEntry entry = new ZipEntry(objFiles.FullName.Substring(path.Length));
                entry.DateTime = DateTime.Now;
                entry.Size = fs.Length;
                fs.Close();
                crc.Reset();
                crc.Update(buffer);
                entry.Crc = crc.Value;
                s.PutNextEntry(entry);
                s.Write(buffer, 0, buffer.Length);
            }
            foreach (DirectoryInfo objdire in myDir.GetDirectories())
            {
                zipFolder(s, objdire.FullName, crc, strparpath);

            }


            s.Finish();
            s.Close();
        }
    }

    private static void zipFolder(ZipOutputStream s, string path, Crc32 crc, string strparpath)
    {

        //定义
        System.IO.DirectoryInfo myDir = new DirectoryInfo(path);
        System.IO.FileInfo[] myFileAry = myDir.GetFiles();
        //循环提取文件夹下每一个文件,提取信息,
        foreach (FileInfo objFiles in myFileAry)
        {
            if (objFiles.FullName.IndexOf(".rar") > 0) continue;
            FileStream fs = File.OpenRead(objFiles.FullName);
            byte[] buffer = new byte[fs.Length];
            fs.Read(buffer, 0, buffer.Length);
            ZipEntry entry = new ZipEntry(objFiles.FullName.Substring(strparpath.Length));
            entry.DateTime = DateTime.Now;
            entry.Size = fs.Length;
            fs.Close();
            crc.Reset();
            crc.Update(buffer);
            entry.Crc = crc.Value;
            s.PutNextEntry(entry);
            s.Write(buffer, 0, buffer.Length);
        }

    }





    /// <summary>
    /// 解压文件
    /// </summary>
    /// <param name="sourceFileName">被解压文件名称</param>
    /// <param name="destPath">解压后文件目录</param>
    /// <param name="password">密码</param>
    public static void unzipFile(string sourceFileName, string destPath, string fileType)
    {
        ZipInputStream s = new ZipInputStream(File.OpenRead(sourceFileName));
        ZipEntry theEntry;
        ArrayList al = new ArrayList();
        string strRootpath = "";
        while ((theEntry = s.GetNextEntry()) != null)
        {
            string fileName = (theEntry.Name);
            if (fileName != "")
            {
                fileName = destPath + "\\" + fileName;
                strRootpath = Path.GetDirectoryName(fileName);
                if (!Directory.Exists(strRootpath))
                {
                    Directory.CreateDirectory(strRootpath);
                }
                FileStream streamWriter = File.Create(fileName);
                int size = 2048;
                byte[] data = new byte[2048];
                s.Password = "";
                while (true)
                {
                    size = s.Read(data, 0, data.Length);
                    if (size > 0)
                    {
                        streamWriter.Write(data, 0, size);
                    }
                    else
                    {
                        break;
                    }
                }
                streamWriter.Close();
            }

        }
        s.Close();

    }

}

 

代码下载

分享到:
评论

相关推荐

    飘鸿WEB在线文件管理系统(原创)

    本软件模拟WINDOWS资源管理器界面, 能完成站点下目录的新建...3、可上传压缩文件(*.zip),上传当指定目录后自动解压。 4、可批量下载多个文件(打包成*.zip下载)。 5、可以选择GB2312、UFT-8编码编辑与保存文件

    ASP.NET 文件压缩解压类(C#)

    本文实例讲述了asp.net C#实现解压缩文件的方法,需要引用一个ICSharpCode.SharpZipLib.dll,供大家参考,具体如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

    ASP.NET 4高级编程:涵盖C#和VB.NET(第7版).part2.rar 第二部分 高清 带目录

    由于文件太大,分三部分压缩,把三部分全部下载,解压即 可。三部分全部,免积分 《ASP.NET 4高级编程:涵盖C#和VB.NET(第7版)》内容简介: 在创建快速、安全的Web应用程序时,ASP.NET可以帮助您尽 可能高效地完成该...

    C# MVC api-接收List实体类参数

    C# MVC ajax调用api接口,api接口以List的形式接收参数,以实现多条记录的操作,以VS2013打开,ASP.NET MVC 4,下载解压rar-demo直接打开运行即可。压缩文件里也包含了“IHttpActionResult不识别解决办法”的文档以...

    C#编程经验技巧宝典

    88 &lt;br&gt;0136 如何进行文本加密与解密 88 &lt;br&gt;0137 如何区别0、空字符串、Null、Empty和Nothing 89 &lt;br&gt;0138 从字符串中分离文件路径、文件名及扩展名 89 &lt;br&gt;0139 如何批量替换某一类字符串 89...

    ASP.NET 图片上传下载缩略察看C#和VB双版.rar

    ASP.NET 图片上传下载缩略察看C#和VB双版.rar 从本地向SQL Server上传存入图片 从SQL Server下载并在网页中显示图片 同时能显示缩略图和大图 ...注意修改web.config文件中的Data Source指向您的SQL Server服务器名

    C#技术大全带源代码

    解压到当前文件夹就有30多兆,再解压一次得到70多兆的源代码,我只有20兆的上传权限,只能压缩两次上传,不过下载后能正常解压没有问题,我试过了,谢谢支持!也希望各位喜欢C#的朋友一起来交流,我的QQ909872237,...

    ASP.NET 4高级编程:涵盖C#和VB.NET(第7版).part3.rar 第三部分 高清 带目录

    由于文件太大,分三部分压缩,把三部分全部下载,解压即可。三部分全部,免积分 《ASP.NET 4高级编程:涵盖C#和VB.NET(第7版)》内容简介:在创建快速、安全的Web应用程序时,ASP.NET可以帮助您尽可能高效地完成该...

    ASP.NET 4高级编程:涵盖C#和VB.NET(第7版).part1.rar 第一部分 高清 带目录

    由于文件太大,分三部分压缩,把三部分全部下载,解压即可。三部分全部,免积分 《ASP.NET 4高级编程:涵盖C#和VB.NET(第7版)》内容简介:在创建快速、安全的Web应用程序时,ASP.NET可以帮助您尽可能高效地完成该...

    基于HTML实现文件数据网站_映阳网络在线压缩解压ZIP文件程序_phpzip(HTML源码+数据集+项目使用说明).rar

    包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用...

    【.Net 】Zip操作库

    DotNetZip是一个易于使用,快速,自由操纵类库和工具集压缩文件或文件夹。 zip和解压很简单:与DotNetZip。NET中编写的应用程序在VB,C#中 - 任何。NET语言 - 可以轻松地创建,阅读,摘录,或更新压缩文件。对于单...

    ASP.NET旅游网源码(商业-全套代码含数据库)

    之前也09年上传过一次,网友说文件解压不了,现在重新上传,代码和数据都放在系统压缩文件中了。 底层有数据库连接类是DLL封装的,不影响使用,如果想研究一下,可以用工具Reflector反编译一下。

    PSMLIB IIS/FTP在线管理组件 v3.2.0.10

    程序主要功能:本免费组件可以为所有支持COM组件调用的脚本语言使用,如asp,php,c#等,并提供完整的API帮助文档,可以轻松使用接口完成WEB在线实时开通IIS站点/FTP空间提供虚拟主机服务。 IIS操作类支持serv_u5/6/7...

    ComponentOne Studio for ASP.NET Wijmo 2013 v1 2/2

    ComponentOne Studio for ASP.NET Wijmo 专门为网页设计窗体而开发,功能强大,覆盖全面,是 ASP.NET 平台全能用户界面开发控件套包;...由于上传文件大小限制,本压缩包共二个压缩文件,请全部下载后解压。

    桃源网络硬盘.Net v5.2

    文件和目录可进行压缩解压ZIP操作,可以批量上传及批量下载文件。 10.文件提取功能,可同时定义多个文件的提取码,提取码可个性化定义,并可限制下载次数及天数。 11.上传码功能,可定义一个目录的外部允许...

    Fckeditor2.6.3

    把下载的FCKeditor2.4.2.zip文件包直接解压缩到FCKPro的根目录下,这样根目录下就得到一个FCKeditor文件夹,里面富含所有FCKeditor的核心文件。 然后把下载的FCKeditor.Net.zip随便解压缩到你硬盘的一个空目录,...

    DocFlow文档管理源码

    设置Web.Config文件中的“IndexingServiceStorageDir” 和 “OriginalStorageDir”为DocFlow安装目录下的“Data\Files” 和 “Data\OriginalFiles”的绝对路径。 按照上面正确配置,最后,在本机上浏览DocFlow: ...

Global site tag (gtag.js) - Google Analytics