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

C# 压缩和解压web空间中的所有代码

    博客分类:
  • c#
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();

    }

}

 

代码下载

分享到:
评论

相关推荐

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

    标题 "C# 压缩和解压web空间中的所有文件" 涉及到的是在C#编程环境中,如何利用代码对Web空间中的文件进行压缩和解压操作。这通常是为了节省存储空间,便于传输或者备份数据。下面将详细阐述相关知识点。 一、C# ...

    C# 压缩解压文件

    在.NET框架中,C#程序员可以使用System.IO.Compression命名空间中的类来实现文件和文件夹的压缩与解压操作。这个命名空间包含了GZipStream、DeflateStream和ZipArchive等类,使得处理ZIP文件变得相当简单。下面我们...

    eif解压压缩C#源代码

    本资源“eif解压压缩C#源代码”提供了处理特定文件格式(如eif和eip)的C#源代码,这对于开发者来说是宝贵的参考资料。下面将详细介绍这些知识点。 1. C#编程语言: C#由微软公司推出,是一种面向对象的、类型安全...

    C# 压缩及解压ZIP文件源代码

    在.NET框架中,C#语言提供了System.IO.Compression命名空间,用于处理文件的压缩和解压缩,特别是ZIP格式。这个命名空间包含了一些类,如ZipArchive,ZipArchiveEntry等,可以方便地对ZIP文件进行操作。下面将详细...

    c# 在线解压在线压缩源码及控件

    总的来说,利用C#和ICSharpCode.SharpZipLib.dll,开发者可以在Web应用中实现在线的文件压缩和解压功能,提高用户体验并简化文件传输流程。不过,需要注意的是,处理用户上传的文件时,必须确保安全性,避免潜在的...

    C#实现Zip压缩解压

    你可以打开`Demos.sln`,使用Visual Studio或其他支持.NET的IDE来查看和运行代码,以更深入地学习C#中ZIP压缩解压的实现细节。 总的来说,C#为开发者提供了强大且易于使用的工具,用于处理ZIP文件的压缩和解压。...

    C#解压缩文件夹保存目录结构

    在IT行业中,C#是一种广泛使用的编程语言,尤其在开发Windows桌面应用、Web应用以及游戏等领域。本篇文章将深入探讨如何使用C#来解压缩文件夹,并在解压过程中保持原有的目录结构。这对于处理包含多层子目录和文件的...

    C#393-批量解压缩源代码

    在C#中实现批量解压缩功能,开发者可以利用.NET Framework或.NET Core提供的System.IO.Compression命名空间,其中包含ZipFile和GZipStream等类,用于处理.zip和.gzip格式的压缩文件。 1. **ZipFile类**: .NET ...

    C# 对文件夹进行压缩和下载

    3. **C#压缩文件夹**: 要压缩一个文件夹,首先获取该文件夹的所有文件和子文件夹,然后对每个文件创建`ZipArchiveEntry`,设置其名称(相对于压缩文件的路径),并用文件内容填充。代码示例如下: ```csharp ...

    C#压缩和解压缩文件的经典源码

    首先,C#中实现压缩和解压缩功能主要依赖于.NET Framework提供的System.IO.Compression命名空间,它包含了GZipStream和DeflateStream类,可以实现GZIP和DEFLATE两种压缩算法。此外,ZipArchive类则提供了对ZIP文件...

    一个基于C#开发的压缩与解压Compress and Decompress类库源码

    在IT行业中,压缩和解压缩技术是数据存储和传输中不可或缺的一部分。本项目提供了一个基于C#编程语言实现的Compress and Decompress类库源码,对于理解和运用C#进行文件压缩具有很高的学习价值。C#是Microsoft开发的...

    源代码 C#实现的zip压缩算法

    C#中的实现通常会使用.NET框架提供的System.IO.Compression命名空间,该命名空间包含了ZipArchive类,可用于创建、读取和修改zip文件。 在C#中,使用ZipArchive类创建zip文件的步骤如下: 1. 创建一个新的...

    压缩图片不失真,c# asp.net

    总之,无损图片压缩在C#和ASP.NET中是一个实用的技术,它结合了.NET Framework的图像处理能力和合适的文件格式,可以在不降低图片质量的前提下减小文件大小。在实际项目中,根据需求选择合适的压缩算法和参数,可以...

    c# sql server 源代码,压缩的源代码,RDLC报表制表程序的源代码,u盘备份的源码

    标题和描述中提到的"RDLC报表制表程序的源代码"是指使用C#编程语言开发的,与SQL Server数据库紧密配合的一种报表生成工具。RDLC(Report Definition Language for Reporting Services)是微软的一种报告设计语言,...

    c# 7z压缩方式,源码 Demo

    2. **引入库**:在你的代码文件中,引入必要的命名空间: ```csharp using SevenZip; ``` 3. **创建7z压缩器对象**:你需要实例化一个` SevenZipCompressor`对象,配置压缩参数: ```csharp var compressor = ...

    asp.net C# 压缩下载多文件 带实例

    在`asp.net C#`中,我们可以利用`System.IO.Compression`命名空间下的类来完成压缩和解压操作。例如,`GZipStream`用于`gzip`压缩,而`ZipArchive`用于`zip`压缩。 1. **GZipStream**: 这个类是`System.IO....

    pako gzip 压缩和解压缩(支持中文)

    在IT行业中,数据压缩是一种常见的优化技术,用于减少文件大小,提高传输效率和存储空间利用率。pako是一个高效的JavaScript库,提供了对多种压缩算法的支持,包括gzip。在本项目中,我们将关注如何使用pako库进行...

    C#图片无损压缩器

    总之,C#中的图片无损压缩涉及了图像处理的多个方面,包括选择合适的无损压缩算法、色彩空间转换、像素操作、预处理和后处理,以及文件保存策略。通过熟练掌握这些技术,开发者可以在C#环境中创建出高效且质量高的...

    在线压缩 在线解压 FTP

    标题中的“在线压缩 在线解压 FTP”涉及的是网络服务中的三个关键技术概念,分别是在线压缩、在线解压和FTP(File Transfer Protocol)。这些技术在IT行业中对于数据传输和存储至关重要。 1. **在线压缩**:在线...

Global site tag (gtag.js) - Google Analytics