当前位置:中国站长下载文章中心网页编程.NET编程 → 用ASP.Net实现文件的在线压缩和解压缩(2)

用ASP.Net实现文件的在线压缩和解压缩(2)

减小字体 增大字体 作者:不详  来源:不详  发布时间:2006-8-14 8:33:34
     // ---------------------------------------------
  // 2. UnZipClass.cs
  // ---------------------------------------------
  
  using System;
  using System.IO;
  using ICSharpCode.SharpZipLib.Zip;
  using ICSharpCode.SharpZipLib.GZip;
  using ICSharpCode.SharpZipLib.BZip2;
  using ICSharpCode.SharpZipLib.Checksums;
  using ICSharpCode.SharpZipLib.Zip.Compression;
  using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
  
  namespace WebZipUnzip
  {
   public class UnZipClass
   {
   /// <summary>
   /// 解压文件
   /// </summary>
   /// <param name="args">包含要解压的文件名和要解压到的目录名数组</param>
   public void UnZip(string[] args)
   {
   ZipInputStream s = new ZipInputStream(File.OpenRead(args[0]));
   try
   {
   ZipEntry theEntry;
   while ((theEntry = s.GetNextEntry()) != null)
   {
   string directoryName = Path.GetDirectoryName(args[1]);
   string fileName = Path.GetFileName(theEntry.Name);
  
   //生成解压目录
   Directory.CreateDirectory(directoryName);
  
   if (fileName != String.Empty)
   {
   //解压文件到指定的目录
   FileStream streamWriter = File.Create(args[1]+fileName);
  
   int size = 2048;
   byte[] data = new byte[2048];
   while (true)
   {
   size = s.Read(data, 0, data.Length);
   if (size > 0)
   {
   streamWriter.Write(data, 0, size);
   }
   else
   {
   break;
   }
   }
  
   streamWriter.Close();
   }
   }
   s.Close();
   }
   catch(Exception eu)
   {
   throw eu;
   }
   finally
   {
   s.Close();
   }
  
   }//end UnZip
  
   public static bool UnZipFile(string file, string dir)
   {
   try
   {
   if (!Directory.Exists(dir))
   Directory.CreateDirectory(dir);
   string fileFullName = Path.Combine(dir,file);
   ZipInputStream s = new ZipInputStream(File.OpenRead( fileFullName ));
  
   ZipEntry theEntry;
   while ((theEntry = s.GetNextEntry()) != null)
   {
   string directoryName = Path.GetDirectoryName(theEntry.Name);
   string fileName = Path.GetFileName(theEntry.Name);
  
   if (directoryName != String.Empty)
   Directory.CreateDirectory( Path.Combine(dir, directoryName));
  
   if (fileName != String.Empty)
   {
   FileStream streamWriter = File.Create( Path.Combine(dir,theEntry.Name) );
   int size = 2048;
   byte[] data = new byte[2048];
   while (true)
   {
   size = s.Read(data, 0, data.Length);
   if (size > 0)
   {
   streamWriter.Write(data, 0, size);
   }
   else
   {
   break;
   }
   }
  
   streamWriter.Close();
   }
   }
   s.Close();
   return true;
   }
   catch (Exception)
   {
   throw;
   }
   }
  
   }//end UnZipClass
  }  做人要厚道,请注明转自chinazhan中国站长(www.ChinaZhan.com)。