当前位置:  编程技术>.net/c#/asp.net

c# 解压缩文件的实现方法与代码

    来源: 互联网  发布时间:2014-08-30

    本文导语:  本文提供的代码,相比网上的代码,作了不少改进,逐步读取文件到内存中,每次读取1024*64个字节,显著节约了内存的占用。 ///解压缩文件 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; usin...

本文提供的代码,相比网上的代码,作了不少改进,逐步读取文件到内存中,每次读取1024*64个字节,显著节约了内存的占用。

///解压缩文件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.IO.Compression;

namespace ZipOrDeCompressHelper
{
    public static class Zip
    {
        #region 压缩、解压缩文件
        ///
        /// 压缩文件 www.
        ///
        ///
        ///
        public static void CompressFile(string sourceFile, string destinationFile)
        {
            if (!File.Exists(sourceFile)) throw new FileNotFoundException();
            using (FileStream sourceStream = new FileStream(sourceFile, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                //if (checkCount != buffer.Length) throw new ApplicationException();
                using (FileStream destinationStream = new FileStream(destinationFile, FileMode.OpenOrCreate, FileAccess.Write))
                {
                    using (GZipStream compressStream = new GZipStream(destinationStream, CompressionMode.Compress))
                    {
                        byte[] buffer = new byte[1024 * 64];
                        int checkCount = 0;
                        while ((checkCount = sourceStream.Read(buffer, 0, buffer.Length)) >= buffer.Length)
                        {
                            compressStream.Write(buffer, 0, buffer.Length);
                        }
                        compressStream.Write(buffer, 0, checkCount);
                    }
                }
            }
        }
      
        ///
        /// 解压缩文件
        ///
        ///
        ///
        public static void DeCompressFile(string sourceFile, string destinationFile)
        {
            if (!File.Exists(sourceFile)) throw new FileNotFoundException();
            using(FileStream sourceStream=new FileStream(sourceFile,FileMode.Open))
            {
                byte[] quartetBuffer = new byte[4];
                const int bufferLength = 1024 * 64;
                /*压缩文件的流的最后四个字节保存的是文件未压缩前的长度信息,
                 * 把该字节数组转换成int型,可获取文件长度。
                 * int position = (int)sourceStream.Length - 4;
                sourceStream.Position = position;
                sourceStream.Read(quartetBuffer, 0, 4);
                sourceStream.Position = 0;
                int checkLength = BitConverter.ToInt32(quartetBuffer, 0);*/
                byte[] buffer = new byte[1024*64];
                using (GZipStream decompressedStream = new GZipStream(sourceStream, CompressionMode.Decompress, true))
                {
                    using (FileStream destinationStream = new FileStream(destinationFile, FileMode.Create))
                    {
                        int total = 0;
                        int bytesRead = 0;
                        while ((bytesRead = decompressedStream.Read(buffer, 0, bufferLength)) >= bufferLength)
                        {
                            destinationStream.Write(buffer, 0, bufferLength);
                        }
                        destinationStream.Write(buffer,0,bytesRead);
                        destinationStream.Flush();
                    }
                }
            }
        }
        #endregion
    }
}


    
 
 

您可能感兴趣的文章:

  • C#实现GZip压缩和解压缩入门实例
  • C#实现压缩HTML代码的方法
  • c#压缩数据传输的代码一例
  • Linux oracle数据库自动备份自动压缩脚本代码 iis7站长之家
  • C# 实现文件的压缩与解压缩的代码
  • c#实现metro文件压缩解压示例
  • c# 解压缩文件(.jar与.zip)的代码
  • C#使用iCSharpcode进行文件压缩实现方法
  • C# 压缩与解压缩RAR文件的代码
  • c#中CLR函数压缩(Gzip)ntext类型字段的实现代码
  • c# 网址压缩简单实现短网址
  • c#调用winrar解压缩文件代码分享
  • c# 解压缩目录中的所有zip文件的代码
  • C#图片压缩的实现方法
  • C#进行图片压缩的代码
  • C#中关于zip压缩解压帮助类的封装 附源码下载
  • C#实现对图片文件的压缩、裁剪操作实例
  • c# 图片压缩工具的实现代码(图文)
  • 急求,h.264压缩、解压缩源代码................100分不够还给!
  • php在线压缩与解压缩SWF文件的代码(修正版)
  • php 压缩多个CSS文件的实现代码
  • ASP.NET实现压缩和解压缩的代码
  • 求linux下mpeg压缩的源代码或者库?
  • php实现zip压缩文件解压缩代码分享(简单易懂)
  • 求救:为何我在windows下解压缩Linux内核源代码时会有重复文件?
  • 谁能提供一下在linux下用c语言编的mp3压缩解压代码,要速度比较快的,给100分
  • MS SQL SERVER 数据库日志压缩方法与代码
  • asp.net文件压缩和解压缩的代码示例
  • PHP压缩CSS文件示例代码
  • PHP压缩html的函数代码
  • Linux oracle数据库自动备份自动压缩脚本代码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux/centos/redhat下各种压缩解压缩方式详解
  • 请教如何在Java中使用arj压缩的文件(压缩和解压缩)Linux下面
  • Apache如何启用gzip压缩
  • 压缩/解压缩软件 7-Zip
  • 压缩和解压缩 WinAce
  • 高速压缩解压缩开发包 Snappy
  • JS的ZIP压缩和解压缩工具 Zip.js
  • 压缩解压缩工具包 XZ Utils
  • 压缩/解压缩工具 p7zip
  • CSS 压缩和解压缩的工具 csCSSc
  • Linux下能压缩.zip 或 .rar 的压缩文件吗?
  • 请教有什么zip压缩库可以压缩文件夹?
  • 文件压缩/解压缩包 Commons Compress
  • 各位哥哥姐姐:如何zip压缩算法来压缩SKB里面的数据部分
  • 怎样解压缩.zip的压缩文件!!
  • [压缩技术]zlib是如何通过参数来调整压缩比和速度?
  • zip在压缩文件的时候,可以把文件的权限也压缩进去吗?
  • zlib的压缩和解压缩包 JZlib
  • 求助!如何在没有图形界面的LINUX下压缩文件夹,并将这个压缩文件在windows下解压?
  • 想在linux下用C实现gzip压缩与解压缩,有没有相关库函数可以调用?
  • 在linux上用tar压缩一个文件后到windows上解压缩出现乱码


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3