`
ljl_xyf
  • 浏览: 636754 次
  • 性别: 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();

    }

}

 

代码下载

分享到:
评论

相关推荐

    C# 压缩解压文件

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

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

    在C#编程语言中,处理文件的压缩与解压缩是一项常见的任务,特别是在数据传输、存储优化和备份场景中。本文将深入探讨C#中如何实现文件的压缩与解压缩功能,以及相关的知识点。 首先,C#中实现压缩和解压缩功能主要...

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

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

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

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

    eif解压压缩C#源代码

    在C#中,可以使用System.IO.Compression命名空间下的类来实现文件的压缩和解压缩,例如GZipStream和DeflateStream用于Gzip和Deflate压缩算法,而ZipArchive则用于处理ZIP格式的压缩文件。 3. EIF(Enterprise ...

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

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

    C#实现Zip压缩解压

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

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

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

    C# 文件压缩解压与sqlite存储文件数据

    C#提供了System.IO.Compression命名空间,其中包含GZipStream和DeflateStream类,可以用来进行GZIP和DEFLATE压缩。如果你需要支持更通用的ZIP格式,可以使用第三方库如SharpZipLib或System.IO.Compression.ZipFile类...

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

    首先,我们需要了解C#中用于处理压缩文件的主要库——`System.IO.Compression`命名空间。这个命名空间包含了`ZipArchive`类,它提供了对ZIP文件的读写操作。要解压缩文件夹,我们首先要打开ZIP文件,然后遍历其中的...

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

    本项目提供了一个基于C#编程语言实现的Compress and Decompress类库源码,对于理解和运用C#进行文件压缩具有很高的学习价值。C#是Microsoft开发的一种面向对象的、类型安全的编程语言,广泛用于构建Windows桌面应用...

    c#在线压缩文件源代码

    在IT行业中,C#是一种广泛使用的编程语言,尤其在开发Windows桌面应用、Web应用以及游戏等领域。本主题聚焦于“C#在线压缩文件源代码”,这通常涉及到如何使用C#来处理文件压缩,特别是RAR格式的压缩。RAR是一种高效...

    压缩/解压文件(支持rar,zip)

    在IT行业中,压缩和解压缩文件是常见的数据处理任务,特别是在网络传输和存储优化时。本文将详细讨论如何使用CS类来实现RAR和ZIP格式的压缩与解压,以及在ASP.NET环境中进行在线操作的相关技术。 首先,RAR和ZIP是...

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

    4. **压缩文件或文件夹**:提供源路径和目标压缩文件路径,然后调用`CompressFiles`或`CompressDirectory`方法: ```csharp compressor.CompressFiles("sourceFilePath", "target7zFilePath"); // 或 compressor...

    WAS 解压,was解压ear,C#

    在提供的标题和描述中,我们聚焦于一个特定的操作,即如何“解压WAS文件”,并且提到了C#语言可能的关联。在大话西游2这个游戏中,可能有特定的WAS文件存储了游戏资源,比如图片,这些资源需要被提取出来。下面我们...

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

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

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

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

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

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

Global site tag (gtag.js) - Google Analytics