知识大全 asp.net 压缩解压缩zip文件

Posted 路径

篇首语:笨人先起身,笨鸟早出林。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 asp.net 压缩解压缩zip文件相关的知识,希望对你有一定的参考价值。

  [csharp] view plaincopyprint?

  using System using System IO using System Diagnostics using Microsoft Win

  using ICSharpCode SharpZipLib Checksums using ICSharpCode SharpZipLib Zip

  ///压缩 解压缩类namespace DotNet Utilities public class SharpZip public SharpZip()

  

  /// <summary> /// 压缩/// </summary> /// <param name= filename > 压缩后的文件名(包含物理路径)</param> /// <param name= directory >待压缩的文件夹(包含物理路径)</param> public static void PackFiles(string filename string directory)

   try FastZip fz = new FastZip() fz CreateEmptyDirectories = true fz CreateZip(filename directory true ) fz = null catch (Exception)

   throw

  /// <summary> /// 解压缩/// </summary> /// <param name= file >待解压文件名(包含物理路径)</param> /// <param name= dir > 解压到哪个目录中(包含物理路径)</param> public static bool UnpackFiles(string file string dir)

   try if (!Directory Exists(dir))

   Directory CreateDirectory(dir) ZipInputStream s = new ZipInputStream(File OpenRead(file)) 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(dir + directoryName) if (fileName != String Empty)

   FileStream streamWriter = File Create(dir + theEntry Name) int size = byte[] data = new byte[ ] while (true)

   size = s Read(data data Length) if (size > )

   streamWriter Write(data size) else break streamWriter Close() s Close() return true catch (Exception)

   throw

  public class ClassZip #region 私有方法/// <summary> /// 递归压缩文件夹方法/// </summary> private static bool ZipFileDictory(string FolderToZip ZipOutputStream s string ParentFolderName)

   bool res = true string[] folders filenames ZipEntry entry = null FileStream fs = null Crc crc = new Crc () try entry = new ZipEntry(Path Combine(ParentFolderName Path GetFileName(FolderToZip) + / )) s PutNextEntry(entry) s Flush() filenames = Directory GetFiles(FolderToZip) foreach (string file in filenames)

   fs = File OpenRead(file) byte[] buffer = new byte[fs Length] fs Read(buffer buffer Length) entry = new ZipEntry(Path Combine(ParentFolderName Path GetFileName(FolderToZip) + / + Path GetFileName(file))) entry DateTime = DateTime Now entry Size = fs Length fs Close() crc Reset() crc Update(buffer) entry Crc = crc Value s PutNextEntry(entry) s Write(buffer buffer Length) catch res = false finally if (fs != null)

   fs Close() fs = null if (entry != null)

   entry = null GC Collect() GC Collect( ) folders = Directory GetDirectories(FolderToZip) foreach (string folder in folders)

   if (!ZipFileDictory(folder s Path Combine(ParentFolderName Path GetFileName(FolderToZip))))

   return false return res

  /// <summary> /// 压缩目录/// </summary> /// <param name= FolderToZip >待压缩的文件夹 全路径格式</param> /// <param name= ZipedFile >压缩后的文件名 全路径格式</param> private static bool ZipFileDictory(string FolderToZip string ZipedFile int level)

   bool res if (!Directory Exists(FolderToZip))

   return false ZipOutputStream s = new ZipOutputStream(File Create(ZipedFile)) s SetLevel(level) res = ZipFileDictory(FolderToZip s ) s Finish() s Close() return res

  /// <summary> /// 压缩文件/// </summary> /// <param name= FileToZip >要进行压缩的文件名</param> /// <param name= ZipedFile >压缩后生成的压缩文件名</param> private static bool ZipFile(string FileToZip string ZipedFile int level)

   if (!File Exists(FileToZip))

   throw new System IO FileNotFoundException( 指定要压缩的文件 + FileToZip + 不存在! ) FileStream ZipFile = null ZipOutputStream ZipStream = null ZipEntry ZipEntry = null bool res = true try ZipFile = File OpenRead(FileToZip) byte[] buffer = new byte[ZipFile Length] ZipFile Read(buffer buffer Length) ZipFile Close()

  ZipFile = File Create(ZipedFile) ZipStream = new ZipOutputStream(ZipFile) ZipEntry = new ZipEntry(Path GetFileName(FileToZip)) ZipStream PutNextEntry(ZipEntry) ZipStream SetLevel(level)

  ZipStream Write(buffer buffer Length) catch res = false finally if (ZipEntry != null)

   ZipEntry = null if (ZipStream != null)

   ZipStream Finish() ZipStream Close() if (ZipFile != null)

   ZipFile Close() ZipFile = null GC Collect() GC Collect( ) return res #endregion

  /// <summary> /// 压缩/// </summary> /// <param name= FileToZip >待压缩的文件目录</param> /// <param name= ZipedFile >生成的目标文件</param> /// <param name= level > </param> public static bool Zip(String FileToZip String ZipedFile int level)

   if (Directory Exists(FileToZip))

   return ZipFileDictory(FileToZip ZipedFile level) else if (File Exists(FileToZip))

   return ZipFile(FileToZip ZipedFile level) else return false

  /// <summary> /// 解压/// </summary> /// <param name= FileToUpZip >待解压的文件</param> /// <param name= ZipedFolder >解压目标存放目录</param> public static void UnZip(string FileToUpZip string ZipedFolder)

   if (!File Exists(FileToUpZip))

   return if (!Directory Exists(ZipedFolder))

   Directory CreateDirectory(ZipedFolder) ZipInputStream s = null ZipEntry theEntry = null string fileName FileStream streamWriter = null try s = new ZipInputStream(File OpenRead(FileToUpZip)) while ((theEntry = s GetNextEntry()) != null)

   if (theEntry Name != String Empty)

   fileName = Path Combine(ZipedFolder theEntry Name) if (fileName EndsWith( / ) || fileName EndsWith( \\\\ ))

   Directory CreateDirectory(fileName) continue streamWriter = File Create(fileName) int size = byte[] data = new byte[ ] while (true)

   size = s Read(data data Length) if (size > )

   streamWriter Write(data size) else break finally if (streamWriter != null)

   streamWriter Close() streamWriter = null if (theEntry != null)

   theEntry = null if (s != null)

   s Close() s = null GC Collect() GC Collect( )

  public class ZipHelper #region 私有变量String the_rar RegistryKey the_Reg Object the_Obj String the_Info ProcessStartInfo the_StartInfo Process the_Process #endregion

  /// <summary> /// 压缩/// </summary> /// <param name= zipname >要解压的文件名</param> /// <param name= zippath >要压缩的文件目录</param> /// <param name= dirpath >初始目录</param> public void EnZip(string zipname string zippath string dirpath)

   try the_Reg = Registry ClassesRoot OpenSubKey(@ Applications\\WinRAR exe\\Shell\\Open\\Command ) the_Obj = the_Reg GetValue( ) the_rar = the_Obj ToString() the_Reg Close() the_rar = the_rar Substring( the_rar Length ) the_Info = a + zipname + + zippath the_StartInfo = new ProcessStartInfo() the_StartInfo FileName = the_rar the_StartInfo Arguments = the_Info the_StartInfo WindowStyle = ProcessWindowStyle Hidden the_StartInfo WorkingDirectory = dirpath the_Process = new Process() the_Process StartInfo = the_StartInfo the_Process Start() catch (Exception ex)

   throw new Exception(ex Message)

  /// <summary> /// 解压缩/// </summary> /// <param name= zipname >要解压的文件名</param> /// <param name= zippath >要解压的文件路径</param> public void DeZip(string zipname string zippath)

   try the_Reg = Registry ClassesRoot OpenSubKey(@ Applications\\WinRar exe\\Shell\\Open\\Command ) the_Obj = the_Reg GetValue( ) the_rar = the_Obj ToString() the_Reg Close() the_rar = the_rar Substring( the_rar Length ) the_Info = X + zipname + + zippath the_StartInfo = new ProcessStartInfo() the_StartInfo FileName = the_rar the_StartInfo Arguments = the_Info the_StartInfo WindowStyle = ProcessWindowStyle Hidden the_Process = new Process() the_Process StartInfo = the_StartInfo the_Process Start() catch (Exception ex)

cha138/Article/program/net/201311/12665

相关参考

知识大全 java 实现压缩与解压缩ZIP

java实现压缩与解压缩ZIP  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!压缩的import&n

知识大全 利用Java实现zip压缩/解压缩(1)

利用Java实现zip压缩/解压缩(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  由于网络

知识大全 文件夹压缩到zip以及解压

  需要用到SharpLibZip代码如下  Zipcs  publicclassZip    ///<summary>  ///压缩文件夹  ///</summary>  /

知识大全 asp.net实现文件夹及文件压缩,并实现下载

  步骤  )先引用ICSharpCodeSharpZipLibdll  )cs文件引入  usingSystemIO;usingSystemText;  usingICSharpCodeSharpZ

知识大全 asp.net用代码压缩服务器上文件夹或文件

cha138/Article/program/net/201311/14328

知识大全 ASP.NET AJAX 资源脚本压缩的秘密

ASP.NETAJAX资源脚本压缩的秘密  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 为什么下载的档案为PDF格式却是压缩档案,双击后为ZIP格式,怎么也打不开

为什么下载的档案为PDF格式却是压缩档案,双击后为ZIP格式,怎么也打不开?  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让

知识大全 我是之前求不后悔那部片的

我是之前求不后悔那部片的这是个压缩文件,你下载下来后,只有.z01这一个文件吗?因为这是ZIP分段压缩的文件,用WINRAR或下载一个压缩包安装软件就应该可以打开,但需要所有的分段才可以完全解压。意思

知识大全 关于rar压缩包中exe文件解压后不显示的问题,急

关于rar压缩包中exe文件解压后不显示的问题,急!单独把exe拖到你解压的目录试试,如果没有提示覆盖的话,多半被杀毒软件杀掉了,关掉你的病毒防火墙实时监控。解压缩包后不显示解压后的文件你在该文件夹里

知识大全 为什么我的电脑解压不了压缩包?

为什么我的电脑解压不了压缩包?1,解压不成功--压缩包里有文件丢失或损坏--从新下载文件2,不会你没装解压软件吧,--下载解压缩软件如winrar为什么电脑解压不了压缩包楼主,你的这种情况绝大多数都是