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

Zip文件压缩和解压

 
阅读更多

Zip文件压缩和解压主要方法:

        /// <summary>
        /// 创建压缩方法
        /// </summary>
        /// <param name="filesPath">文件目录</param>
        /// <param name="zipFilePath">保存目录</param>
        private static void CreateZipFile(string filesPath, string zipFilePath)
        {
            if (!Directory.Exists(filesPath))
            {
                Console.WriteLine("Cannot find directory '{0}'", filesPath);
                return;
            }
            try
            {
                string[] filenames = Directory.GetFiles(filesPath);
                using (ZipOutputStream s = new ZipOutputStream(File.Create(zipFilePath)))
                {
                    s.SetLevel(9); // 压缩级别 0-9
                    //s.Password = "123"; //Zip压缩文件密码
                    byte[] buffer = new byte[4096]; //缓冲区大小
                    foreach (string file in filenames)
                    {
                        ZipEntry entry = new ZipEntry(Path.GetFileName(file));
                        entry.DateTime = DateTime.Now;
                        s.PutNextEntry(entry);
                        using (FileStream fs = File.OpenRead(file))
                        {
                            int sourceBytes;
                            do
                            {
                                sourceBytes = fs.Read(buffer, 0, buffer.Length);
                                s.Write(buffer, 0, sourceBytes);
                            } while (sourceBytes > 0);
                        }
                    }
                    s.Finish();
                    s.Close();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception during processing {0}", ex);
            }
        }

        /// <summary>
        /// 解压缩的方法
        /// </summary>
        /// <param name="zipFilePath">解压文件的路径</param>
        private static void UnZipFile(string zipFilePath)
        {
            if (!File.Exists(zipFilePath))
            {
                Console.WriteLine("Cannot find file '{0}'", zipFilePath);
                return;
            }

            using (ZipInputStream s = new ZipInputStream(File.OpenRead(zipFilePath)))
            {

                ZipEntry theEntry;
                while ((theEntry = s.GetNextEntry()) != null)
                {
                    Console.WriteLine(theEntry.Name);
                    string directoryName = Path.GetDirectoryName(theEntry.Name);
                    string fileName = Path.GetFileName(theEntry.Name);

                    // create directory
                    if (directoryName.Length > 0)
                    {
                        Directory.CreateDirectory(directoryName);
                    }

                    if (fileName != String.Empty)
                    {
                        using (FileStream streamWriter = File.Create(theEntry.Name))
                        {
                            int size = 2048;
                            byte[] data = new byte[2048];
                            while (true)
                            {
                                size = s.Read(data, 0, data.Length);
                                if (size > 0)
                                {
                                    streamWriter.Write(data, 0, size);
                                }
                                else
                                {
                                    break;
                                }
                            }
                        }
                    }
                }
            }

        }

 调用方法:

static void Main(string[] args)
        {
           // CreateZipFile(@"D:\Save", @"D:\Pic\save.rar");
            UnZipFile(@"D:\Pic\save.rar");
            Console.ReadKey();
        }

 

分享到:
评论

相关推荐

    zip文件压缩和解压

    zip文件压缩和解压工具类: 1.compressDirectory该方法提供将一个目录压缩为一个压缩包 2.unzip该方法提供解压缩文件

    Java实现的带密码压缩与解压zip文件源码

    在Java编程环境中,处理压缩和解压缩文件是一...以上是关于Java实现带密码的ZIP文件压缩和解压的基本概念和实现细节。通过深入理解这些知识点,开发者可以构建自己的安全文件处理工具,满足对数据隐私和安全性的需求。

    C++ Zlib库实现zip文件压缩解压(支持递归压缩)

    实现zip文件的压缩,我们通常会遍历要压缩的目录,递归地将每个文件添加到`zip`档案中。这需要使用`minizip`的`zipOpen`、`zipOpenNewFileInZip`、`zipWriteInFileInZip`和`zipCloseFileInZip`等函数。同时,对于每...

    zip文件压缩解压源码 (c++)

    总结来说,`zip文件压缩解压源码(C++)`涉及的关键技术包括:理解zip文件格式,使用C++进行文件操作,选择和应用压缩算法,以及错误处理。通过分析和理解`XUnzip.cpp`和`XZip.cpp`,我们可以学习如何在C++环境中...

    VB6.0调用 DLL版ZIP压缩文件夹目录和解压ZIP文件

    VB6.0调用 DLL版ZIP压缩文件夹目录和解压ZIP文件,网上很多源码不好用,所以就自己做了一个。原始代码是VC++的用VS2019编译了一个,DLL封装了下。调用很简单 '调用方法如下: 'CreateZipFileA "C:\123", "C:\123.zip...

    ZIP压缩和解压类

    本篇文章将详细讲解ZIP压缩和解压类的相关知识,以及如何封装一个简单的ZIP文件处理接口。 一、ZIP文件格式基础 ZIP是一种流行的文件存档格式,它允许将多个文件和目录打包成一个单一的文件。ZIP文件内部包含了一个...

    java 操作Zip文件(压缩、解压、加密).zip

    Java操作Zip文件主要涉及到对文件和目录的压缩与解压缩,以及在必要时对压缩文件进行加密处理。这里我们重点讨论使用两个库:`zip4j`和`Apache Ant`来实现这些功能。 1. **zip4j库**:`zip4j-1.3.2.jar`是一个用...

    C语言实现Zip压缩解压.rar

    总之,C语言实现ZIP压缩解压涉及文件操作、数据压缩算法和ZIP文件格式的理解。通过学习和应用相关库,开发者可以创建自己的ZIP工具,满足特定的需求。这个过程既锻炼了C语言编程技能,也加深了对文件压缩技术的理解...

    vbs压缩和解压zip,vbs压缩zip,vbs解压zip

    3. **ZIP 文件格式**:一种广泛使用的文件压缩与存档格式,能够将多个文件及目录压缩成一个单一的ZIP文件,同时支持文件的加密保护。 #### 二、压缩 ZIP 文件 ##### 代码解析 ```vbscript Sub Zip(ByVal ...

    Zip压缩和解压文件

    在IT领域,文件压缩是一种常见的数据管理技术,用于减少文件大小,便于存储、传输和分享。Zip格式是最常用的文件压缩格式之一,它允许用户将多个文件和文件夹打包成一个单一的Zip档案,大大节省了磁盘空间。本文将...

    zip格式压缩和解压

    下面我们将详细介绍如何进行ZIP文件的压缩和解压。 ### ZIP文件的压缩 1. **Windows系统**:通过资源管理器右键菜单,选择“发送到”-&gt;“压缩(zipped)文件夹”,然后指定压缩后文件的保存位置即可。 2. **macOS**...

    C++ zip解压缩压缩

    标题中的"C++ zip解压缩"指的是使用C++编程语言来处理ZIP文件格式,这是一种广泛使用的文件打包和压缩格式。ZIP文件可以将多个文件和目录组合到一个单一的档案文件中,并且可以进行压缩以节省存储空间。C++库提供了...

    java zip 压缩解压例子

    总结,Java的`java.util.zip`包提供了解决ZIP文件压缩和解压需求的工具。通过`ZipOutputStream`和`ZipInputStream`,我们可以方便地处理ZIP文件,无论是创建新的ZIP文件,还是读取和提取已有的ZIP文件。同时,这些...

    C++压缩和解压ZIP文件,有演示代码

    ZIP是一种通用的文件压缩格式,它允许将多个文件和目录打包成单个文件,并可以同时进行压缩。ZIP文件内部包含了一个文件头列表,每个文件头包含了文件名、压缩方法、压缩时间等信息。 接下来,我们将探讨如何在C++...

    Android将assets中的zip压缩文件解压到SD卡

    Android SDK提供了解压缩ZIP文件的工具类`ZipFile`和`InputStream`。以下是一个简单的解压流程: 1. 打开`assets`目录下的ZIP文件: ```java AssetManager assetManager = getAssets(); InputStream is = null; ...

    MFC的极其简单的压缩和解压代码

    在IT行业中,MFC(Microsoft Foundation Classes)是一个C++...通过`unzip.cpp`、`zip.cpp`、`unzip.h`和`zip.h`这四个文件,我们可以学习到如何将这些技术整合到MFC应用程序中,为用户提供便捷的文件压缩和解压功能。

    java中zip流的压缩和解压

    总结来说,Java的`java.util.zip`包提供了解决ZIP文件压缩和解压的强大工具。通过`ZipOutputStream`和`ZipInputStream`,开发者可以轻松地将多个文件打包成ZIP文件,或者将ZIP文件中的内容解压到指定的目录。这在...

    PHP在线压缩解压ZIP文件

    总结来说,这个PHP在线压缩解压ZIP文件的工具是一个基于Web的实用程序,它利用PHP的ZipArchive类处理ZIP文件的压缩和解压。通过密码保护机制,它可以提供一定程度的安全性。实现这一功能的核心代码可能分布在unzip....

    java解压zip压缩文件

    在Java编程环境中,解压ZIP压缩文件是一项常见的任务,它涉及到文件I/O操作以及对ZIP文件格式的理解。本文将深入探讨如何使用Java实现这一功能,同时也会提及`UnZip.java`和`UnZip2.java`这两个文件可能包含的实现...

Global site tag (gtag.js) - Google Analytics