网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的范文:

 

标题 asp.net C#实现解压缩文件的方法
范文
    易贤网网校上线了!
    >>>点击进入<<<
    网校开发及拥有的课件范围涉及公务员、财会类、外语类、外贸类、学历类、
    职业资格类、计算机类、建筑工程类、等9大类考试的在线网络培训辅导。
    本文实例讲述了asp.net C#实现解压缩文件的方法。一共给大家介绍了三段代码,一个是简单的解压缩单个zip文件,后一个可以解压批量的大量的但需要调用ICSharpCode.SharpZipLib.dll类了,最后一个比较实例可压缩也可以解压缩了分享给大家供大家参考。具体如下:
    解压缩单个文件:
    代码如下:
    using System.IO;
    using System.IO.Compression;
    string sourceFile=@"D:2.zip";
    string destinationFile=@"D:1.txt";
    private const long BUFFER_SIZE = 20480;
    // make sure the source file is there
    if (File.Exists ( sourceFile ))
    {
    FileStream sourceStream = null;
    FileStream destinationStream = null;
    GZipStream decompressedStream = null;
    byte[] quartetBuffer = null;
    try
    {
    // Read in the compressed source stream
    sourceStream = new FileStream ( sourceFile, FileMode.Open );
    // Create a compression stream pointing to the destiantion stream
    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;
    }
    // Now write everything to the destination file
    destinationStream = new FileStream ( destinationFile, FileMode.Create );
    destinationStream.Write ( buffer, 0, total );
    // and flush everyhting to clean out the buffer
    destinationStream.Flush ( );
    }
    catch ( ApplicationException ex )
    {
    Console.WriteLine(ex.Message, "解压文件时发生错误:");
    }
    finally
    {
    // Make sure we allways close all streams
    if ( sourceStream != null )
    sourceStream.Close ( );
    if ( decompressedStream != null )
    decompressedStream.Close ( );
    if ( destinationStream != null )
    destinationStream.Close ( );
    }
    }
    批量解压缩(这需要调用一个解压缩类库。。 ICSharpCode.SharpZipLib.dll)
    代码如下:
    using System;
    using System.IO;
    using System.Collections.Generic;
    using System.Text;
    using ICSharpCode.SharpZipLib.Zip;
    namespace ZipLib
    {
    /// <summary>
    /// 解压缩类
    /// </summary>
    public static class ZIP
    {
    /// <summary>
    /// 解压ZIP文件包
    /// </summary>
    /// <param name="strZipFile">ZIP文件路径</param>
    /// <param name="strDir">解压后的文件目录路径</param>
    /// <returns>是否解压成功</returns>
    public static bool unzipFiles(string strZipFile, string strDir)
    {
    //判断ZIP文件是否存在
    if (File.Exists(strZipFile))
    {
    //判断目录是否存在
    bool bUnzipDir = false;
    //判断是否需要创建目录
    if (!Directory.Exists(strDir))
    bUnzipDir = (Directory.CreateDirectory(strDir) != null);
    else
    bUnzipDir = true;
    //如果解压目录存在
    if (bUnzipDir)
    {
    //获得ZIP数据流
    ZipInputStream zipStream = new ZipInputStream(File.OpenRead(strZipFile));
    if (zipStream != null)
    {
    ZipEntry zipEntry = null;
    while ((zipEntry = zipStream.GetNextEntry()) != null)
    {
    string strUnzipFile = strDir + "//" + zipEntry.Name;
    string strFileName = Path.GetFileName(strUnzipFile);
    string strDirName = Path.GetDirectoryName(strUnzipFile);
    //是否为解压目录
    if (!string.IsNullOrEmpty(strDirName))
    Directory.CreateDirectory(strDirName);
    //是否为解压文件
    if (!string.IsNullOrEmpty(strFileName))
    {
    //解压文件
    FileStream unzipFileStream = new FileStream(strUnzipFile, FileMode.Create);
    if (unzipFileStream != null)
    {
    byte[] buf = new byte[2048];
    int size = 0;
    while ((size = zipStream.Read(buf, 0, 2048)) > 0)
    unzipFileStream.Write(buf, 0, size);
    //关闭Stream
    unzipFileStream.Flush();
    unzipFileStream.Close();
    }
    }
    }
    //关闭ZIP流
    zipStream.Close();
    //返回值
    return true;
    }
    }
    }
    return false;
    }
    }
    }
随便看

 

在线学习网范文大全提供好词好句、学习总结、工作总结、演讲稿等写作素材及范文模板,是学习及工作的有利工具。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/16 9:24:02