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

c# 解压缩目录中的所有zip文件的代码

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

    本文导语:  代码示例: ///解压缩目录中的所有zip文件 using System; using System.IO; using System.IO.Compression; using System.Collections; using System.Collections.Generic; private const long BUFFER_SIZE = 20480; class FolderUnzip { static void main(string[] args) { string sourcepath=...

代码示例:

///解压缩目录中的所有zip文件
using System;
using System.IO;
using System.IO.Compression;
using System.Collections;
using System.Collections.Generic;
private const long BUFFER_SIZE = 20480;
class FolderUnzip
{
static void main(string[] args)
{
string sourcepath=@"D:temp";
Queue Folders = new Queue(new DirectoryInfo(sourcepath).GetFileSystemInfos());
string copytopath =@"E:tt";
copytopath = (copytopath.LastIndexOf(Path.DirectorySeparatorChar) == copytopath.Length - 1) ? copytopath : (copytopath+Path.DirectorySeparatorChar) + Path.GetFileName(sourcepath);
Directory.CreateDirectory(copytopath);
while (Folders.Count > 0)
{
    FileSystemInfo atom = Folders.Dequeue();
    FileInfo zipfile = atom as FileInfo;
    if (zipfile == null)
    {
        DirectoryInfo directory = atom as DirectoryInfo;
        Directory.CreateDirectory(directory.FullName.Replace(sourcepath,copytopath));
        foreach (FileSystemInfo nextatom in directory.GetFileSystemInfos())
            Folders.Enqueue(nextatom);
    }
    else
    {
        if (zipfile.Name.IndexOf(".zip") > -1)
        {
            string zipfilename = zipfile.FullName;
            string originalfilename = zipfilename.Replace(sourcepath,copytopath).Substring(0, (int)(zipfile.Length - 4));
            if (!File.Exists(originalfilename))
            {
                FileStream sourceStream = null;
                FileStream destinationStream = null;
                GZipStream decompressedStream = null;
                byte[] quartetBuffer = null;
                try
                {
                    // Read in the compressed source stream
                    sourceStream = new FileStream(zipfilename, FileMode.Open);

                    if(sourceStream.Length>4)
{
                    decompressedStream = new DeflateStream(sourceStream, CompressionMode.Decompress, true);

                    // Read the footer to determine the length of the destiantion file
                    quartetBuffer = new byte[4];
                    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[checkLength + 100];

                    int offset = 0;
                    int total = 0;

                    // Read the compressed data into the buffer
                    while (true)
                    {
                        int bytesRead = decompressedStream.Read(buffer, offset, 100);
                        if (bytesRead == 0)
                            break;
                        offset += bytesRead;
                        total += bytesRead;
                    }
                    destinationStream = new FileStream(originalfilename, FileMode.Create);
                    destinationStream.Write(buffer, 0, total);
                    destinationStream.Flush();
}
                }
                catch (ApplicationException)
                {
                    continue;
                }
                finally
                {
                    // Make sure we allways close all streams
                    if (sourceStream != null)  sourceStream.Close();
                    if (decompressedStream != null)  decompressedStream.Close();
                    if (destinationStream != null) destinationStream.Close();
                }
            }
        }
    }
}
}
}


    
 
 

您可能感兴趣的文章:

  • C#实现GZip压缩和解压缩入门实例
  • C#实现压缩HTML代码的方法
  • c#压缩数据传输的代码一例
  • C#使用晚绑定来实现压缩Access数据库的方法
  • C# 实现文件的压缩与解压缩的代码
  • c#实现metro文件压缩解压示例
  • c# 解压缩文件(.jar与.zip)的代码
  • c# 解压缩文件的实现方法与代码
  • C#使用iCSharpcode进行文件压缩实现方法
  • C# 压缩与解压缩RAR文件的代码
  • c#中CLR函数压缩(Gzip)ntext类型字段的实现代码
  • c# 网址压缩简单实现短网址
  • c#调用winrar解压缩文件代码分享
  • 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