zoukankan      html  css  js  c++  java
  • 在C#中压缩解压缩文件(适合.Net1.x)

    在C#中压缩解压缩文件的两种方式:
    使用开源的
    SharpZipLib  ,下面的代码是使用SharpZipLib做简单封装的压缩解压缩类:
     /// <summary>
     /// FileZipLib 压缩,解压缩的类
     /// </summary>
     public class FileZipLib
     {
      public FileZipLib() {}

      /// <summary>
      /// 创建一个压缩文件
      /// </summary>
      /// <param name="zipFilename">压缩后的文件名</param>
      /// <param name="sourceDirectory">待压缩文件的所在目录</param>
      public static void PackFiles(string zipFilename,string sourceDirectory)
      {
       FastZip fz = new FastZip() ;
       fz.CreateEmptyDirectories = true ;
       fz.CreateZip(zipFilename,sourceDirectory,true,"") ;
       fz = null ;
      }

      /// <summary>
      /// 解压缩文件
      /// </summary>
      /// <param name="zipFile">待解压缩的文件</param>
      /// <param name="directory">解压缩后文件存放的目录</param>
      public static bool UnpackFiles(string zipFile,string directory)
      {
       if( !Directory.Exists(directory) )
        Directory.CreateDirectory(directory) ;

       ZipInputStream zis = new ZipInputStream( File.OpenRead(zipFile) ) ;
       ZipEntry theEntry = null ;
       while( (theEntry = zis.GetNextEntry()) != null )
       {
        string directoryName = Path.GetDirectoryName(theEntry.Name) ;
        string fileName = Path.GetFileName(theEntry.Name) ;
        if( directoryName != string.Empty )
         Directory.CreateDirectory(directory + directoryName) ;

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

         streamWriter.Close() ;
        }
       }

       zis.Close() ;
       return true ;
      }
     }
    最后别忘了using ICSharpCode.SharpZipLib.Zip ;
    以上代码参照
    利用 SharpZipLib方便地压缩和解压缩文件 而做了小修改

    另外一种方法使用Microsoft J# 类库,具体参考MSDN文章:
    通过 C# 使用 J# 类库中的 Zip 类压缩文件和数据

    本文首发于http://www.365keyi.com/article.asp?id=5

  • 相关阅读:
    杭电2059
    杭电2058
    php错误大集合
    显示IP地址
    超简单好用的屏幕录像工具
    jquery“不再提醒"功能
    KindEditor编辑器中的class自动过滤了
    实用案例:切换面板同时切换内容
    仿51返利用户图解教程
    JavaScript调用dataTable并获取其值(ASP.Net,VS2005)
  • 原文地址:https://www.cnblogs.com/kwklover/p/364074.html
Copyright © 2011-2022 走看看