`
ld_hust
  • 浏览: 171620 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

C#处理压缩文件

    博客分类:
  • .Net
阅读更多

添加引用,添加SharpZipLib.dll

SharpZipLib.dll 的下载网址:http://www.icsharpcode.net/OpenSource/SharpZipLib/

//***************CodeTest*************************************

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using ICSharpCode.SharpZipLib.Checksums;
using ICSharpCode.SharpZipLib.Zip;
using ICSharpCode.SharpZipLib.GZip;

class Test
{
    //This is the method of zip:
    //SrcFile 源文件路径,DstFile 压缩后目标文件的路径,BufferSize 缓冲期大小
    public static void Zip(string SrcFile, string DstFile, int BufferSize)
    {
        FileStream fileStreamIn = new FileStream(SrcFile, FileMode.Open, FileAccess.Read);
        FileStream fileStreamOut = new FileStream(DstFile, FileMode.Create, FileAccess.Write);
        ZipOutputStream zipOutStream = new ZipOutputStream(fileStreamOut);
        byte[] buffer = new byte[BufferSize];
        ZipEntry entry = new ZipEntry(Path.GetFileName(SrcFile));
        zipOutStream.PutNextEntry(entry);
        int size;
        do
        {
            size = fileStreamIn.Read(buffer, 0, buffer.Length);
            zipOutStream.Write(buffer, 0, size);
        } while (size > 0);
        zipOutStream.Close();
        fileStreamOut.Close();
        fileStreamIn.Close();
    }
    //This is the method of unzip:
    //SrcFile 源文件路径,DstFile 解压缩后目标文件的路径,BufferSize 缓冲期大小
    public static void UnZip(string SrcFile, string DstFile, int BufferSize)
    {
        FileStream fileStreamIn = new FileStream(SrcFile, FileMode.Open, FileAccess.Read);
        ZipInputStream zipInStream = new ZipInputStream(fileStreamIn);
        ZipEntry entry = zipInStream.GetNextEntry();
        FileStream fileStreamOut = new FileStream(DstFile, FileMode.Create, FileAccess.Write);
        int size;
        byte[] buffer = new byte[BufferSize];
        do
        {
            size = zipInStream.Read(buffer, 0, buffer.Length);
            fileStreamOut.Write(buffer, 0, size);
        } while (size > 0);
        zipInStream.Close();
        fileStreamOut.Close();
        fileStreamIn.Close();
    }

    public static void Main(string[] args)
    {
        try
        {
            //定义文件路径
            string SrcFile = @"C:\temp\MyTest.txt";
            string DstFile = @"C:\temp\MyTest.zip";
            //默认缓冲器字节大小
            int BufferSize = 4096;
            //压缩文件,将 SrcFile 文件压缩为 DstFile 文件
            Zip(SrcFile, DstFile, BufferSize);
            //解压缩文件,将压缩文件 DstFile 解压为 SrcFile 文件
            //UnZip(DstFile, SrcFile, BufferSize);
        }
        catch (IOException ex)
        {
            Console.WriteLine("An IO exception has been thrown!");
            Console.WriteLine(ex.ToString());
            Console.ReadKey();
        }
    }
}

//***************EndCode*************************************

GZipStream 类:提供用于压缩和解压缩流的方法和属性。

//***************CodeTest************************************

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.IO.Compression;//使用压缩类

class Test
{
    static void SaveCompressedFile(string filename, string data)
    {
        //创建一个 FileStream 对象
        FileStream fileStream = new FileStream(filename, FileMode.Create, FileAccess.Write);

        //创建一个 GZipStream 对象,Compress 表示压缩基础流。
        GZipStream compressionStream = new GZipStream(fileStream, CompressionMode.Compress);

        //实现一个 write,使其以一种特定的编码向流中写入字符。
        StreamWriter writer = new StreamWriter(compressionStream);
        writer.Write(data);
        writer.Close();
    }
    static string LoadCompressedFile(string filename)
    {
        //创建一个 FileStream 对象
        FileStream fileStream = new FileStream(filename, FileMode.Open, FileAccess.Read);

        //创建一个 GZipStream 对象,Decompress 表示解压缩基础流。
        GZipStream compressionStream = new GZipStream(fileStream, CompressionMode.Decompress);

        //实现从字符串进行读取
        StreamReader reader = new StreamReader(compressionStream);
        string data = reader.ReadToEnd();
        reader.Close();
        return data;
    }

    public static void Main(string[] args)
    {
        try
        {
            //定义文件路径
            string filename = @"c:\compressedFile.txt";
            Console.WriteLine("Enter a string to compress (will be repeated 100 times):");
            //再控制台上输入文字
            string sourceString = Console.ReadLine();
            StringBuilder sourceStringMultiplier = new StringBuilder(sourceString.Length * 100);
            for (int i = 0; i < 100; i++)
            {
                sourceStringMultiplier.Append(sourceString);
            }
            sourceString = sourceStringMultiplier.ToString();
            Console.WriteLine("Source data is {0} bytes long.", sourceString.Length);

            SaveCompressedFile(filename, sourceString);
            Console.WriteLine("\nData saved to {0}.", filename);

            FileInfo compressedFileData = new FileInfo(filename);
            Console.WriteLine("Compressed file is {0} bytes long.", compressedFileData.Length);

            string recoveredString = LoadCompressedFile(filename);
            recoveredString = recoveredString.Substring(0, recoveredString.Length / 100);
            Console.WriteLine("\nRecovered data: {0}", recoveredString);

            Console.ReadKey();
        }
        catch (IOException ex)
        {
            Console.WriteLine("An IO exception has been thrown!");
            Console.WriteLine(ex.ToString());
            Console.ReadKey();
        }
    }
}

//***************EndCode*************************************

//***************CodeTest*************************************

//***************EndCode*************************************

分享到:
评论

相关推荐

    C#处理压缩文件代码

    在C#编程环境中,处理压缩文件是常见的任务之一,尤其是当你需要打包或解压数据时。ZIP格式是一种广泛使用的压缩格式,它允许我们将多个文件压缩到一个单一的ZIP档案中,以便于存储、传输和分享。本文将深入探讨如何...

    C#压缩解压缩支持大文件

    在.NET框架中,C#提供了内置的压缩和解压缩功能,主要通过`...通过这些方法,开发者可以在C#中高效地处理大文件的GZip压缩和解压缩任务,而无需依赖第三方库。在实际项目中,可以根据具体需求对代码进行优化和调整。

    C# 文件压缩-指定文件压缩

    总结来说,C#提供了强大的文件压缩和解压缩功能,通过ZipArchive类可以方便地处理ZIP文件,而GZipStream和DeflateStream则用于流式压缩。在实际开发中,可以根据需求选择合适的方法进行文件或数据的压缩与解压缩操作...

    C#对压缩文件的加密解密.rar

    本资源"**C#对压缩文件的加密解密.rar**"显然是一个C#实现的项目,专注于在Winform应用程序中对zip、jar和rar三种常见压缩格式进行加密和解密的操作。 首先,让我们了解C#中的压缩技术。`System.IO.Compression`...

    C# 操作压缩文件(例子)

    在C#编程环境中,处理压缩文件是一项常见的任务,可以用于数据备份、文件传输或优化存储空间。本篇文章将深入探讨如何使用C#操作压缩文件,包括创建、读取和解压ZIP格式的文件,以及一些实用的例子来帮助你更好地...

    C#批量压缩文件为zip文件类库.rar

    总的来说,"C#批量压缩文件为zip文件类库"是一个用于批量压缩文件的解决方案,它结合了C#内置的ZipArchive类和第三方的SharpZipLib库,为开发者提供了一种高效且易于使用的工具,用于处理大量的文件压缩任务。

    C#压缩和解压缩文件

    在.NET开发环境中,C#语言提供了多种方法来处理文件的压缩和解压缩任务。其中,ICSharpCode.SharpZipLib是一个流行的开源库,为开发者提供了强大的文件压缩和解压缩功能。这个库支持多种压缩格式,如ZIP、GZip、BZip...

    c#解压缩文件栗子

    首先,我们需要引入System.IO.Compression命名空间,这是处理压缩文件的基础。在C#代码文件的开头,添加以下语句: ```csharp using System.IO; using System.IO.Compression; ``` **压缩文件:** 要压缩一个或多...

    c# 文件压缩

    在C#编程环境中,文件压缩是一项常见的任务,用于节省存储空间和...在实际项目中,根据具体需求,我们可以进一步扩展这些类和方法,例如添加错误处理、进度回调、多线程处理等功能,以提供更全面的文件压缩解决方案。

    一个c#的压缩示例文件

    在C#编程中,压缩文件是一项常见的任务,可以有效地减小文件或文件夹的存储空间。本示例文件提供了一个关于如何在C#中实现文件压缩的实例。使用C#进行文件压缩通常涉及到.NET框架提供的System.IO.Compression命名...

    C# 压缩解压文件

    总的来说,C#提供了一套强大的工具来处理压缩和解压任务,无论是单个文件还是整个文件夹,都能通过简单的API调用实现。在WebApplication48这样的项目中,这些功能可能用于备份数据、传输文件或者优化存储需求。通过...

    C# 图片压缩 多文件压缩

    总结,C#提供了一套强大的工具来处理图片压缩和文件压缩。使用ImageSharp库可以灵活地对图片进行有损或无损压缩,而ZipArchive类则允许我们将多个文件打包成ZIP格式,并支持各种自定义设置。通过掌握这些技术,...

    C#解压缩文件或文件夹大量类

    根据给定的信息,本文将详细解释C#中用于解压缩文件或文件夹的类库以及一个具体的示例类`ZipClass`。此示例代码片段提供了压缩文件夹的基本功能,并展示了如何利用`ICSharpCode.SharpZipLib`库来实现。 ### C#中的...

    C#实现文件压缩

    结合以上两个功能,你可以创建一个完整的C#应用,不仅能够压缩文件,还能生成记录压缩文件信息的XML文档。这对于自动化备份、数据传输和日志记录等场景都十分有用。 总的来说,C#提供了一套强大的工具来处理文件...

    c# 利用WinRAR压缩解压缩文件

    以下是一个解压缩文件的C#代码示例: ```csharp public void ExtractArchive(string archivePath, string targetExtractPath) { var process = new Process(); process.StartInfo.FileName = "rar.exe"; process...

    C#压缩文件(多文件)

    在C#编程环境中,压缩文件是一项常见的任务,尤其在数据传输和存储中。本文将深入探讨如何使用C#来压缩单个文件以及多个文件,并基于VS2010的WinForm界面实现这一功能。 首先,我们需要引入System.IO.Compression...

    c#在线压缩文件源代码

    在IT行业中,C#是一种广泛使用的编程语言,尤其在开发Windows桌面应用、Web应用以及游戏等领域。本主题聚焦于“C#在线压缩文件源...在处理压缩文件时,务必注意错误处理,确保在出现异常时能够妥善地恢复或报告状态。

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

    此外,ZipArchive类则提供了对ZIP文件格式的支持,这是最常见的压缩文件格式之一。 **GZIP和DEFLATE** 1. **GZIP**: 是一种广泛使用的压缩格式,基于DEFLATE算法,并添加了文件头和文件尾信息,使得文件可被识别和...

    C# Datatable压缩成ZIP文件

    在.NET Framework中,`System.IO.Compression`命名空间提供了一系列的类用于处理压缩文件,如`ZipArchive`。我们可以利用`ZipArchive`创建一个新的ZIP文件,并将XML数据写入到其中的一个ZIP条目(ZipArchiveEntry)...

    基于C#的压缩与解压缩 源码

    - 对于已压缩的ZIP文件,你可以使用`ZipArchive`的静态方法`Open`打开它,然后遍历`ZipArchive.Entries`集合,对每个条目调用`ExtractToFile`方法,指定目标路径以解压缩文件。 4. **解压缩目录**: - 解压缩整个...

Global site tag (gtag.js) - Google Analytics