源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

asp.net C#实现解压缩文件的方法

  • 时间:2021-11-14 11:31 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:asp.net C#实现解压缩文件的方法
本文实例讲述了asp.net C#实现解压缩文件的方法。一共给大家介绍了三段代码,一个是简单的解压缩单个zip文件,后一个可以解压批量的大量的但需要调用ICSharpCode.SharpZipLib.dll类了,最后一个比较实例可压缩也可以解压缩了分享给大家供大家参考。具体如下: 解压缩单个文件:
[url=http://xiazai.1sucai.cn/201411/yuanma/icsharpcode-SharpZipLib-c49a22d(1sucai.cn).zip]本站下载[/url]。 引用SharpZipLib.dll,在项目中点击项目右键-->添加引用-->浏览,找到要添加的DLL-->确认 改写了文件压缩和解压缩的两个类,新建两个类名字为ZipFloClass.cs,UnZipFloClass.cs 源码如下
[u]复制代码[/u] 代码如下:
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.IO; using ICSharpCode.SharpZipLib.Checksums; using ICSharpCode.SharpZipLib.Zip; using ICSharpCode.SharpZipLib.GZip; /// <summary> /// ZipFloClass 的摘要说明 /// </summary> public class ZipFloClass {     public void ZipFile(string strFile, string strZip)     {         if (strFile[strFile.Length - 1] != Path.DirectorySeparatorChar)             strFile += Path.DirectorySeparatorChar;         ZipOutputStream s = new ZipOutputStream(File.Create(strZip));         s.SetLevel(6); // 0 - store only to 9 - means best compression         zip(strFile, s, strFile);         s.Finish();         s.Close();     }     private void zip(string strFile, ZipOutputStream s, string staticFile)     {         if (strFile[strFile.Length - 1] != Path.DirectorySeparatorChar) strFile += Path.DirectorySeparatorChar;         Crc32 crc = new Crc32();         string[] filenames = Directory.GetFileSystemEntries(strFile);         foreach (string file in filenames)         {             if (Directory.Exists(file))             {                 zip(file, s, staticFile);             }             else // 否则直接压缩文件             {                 //打开压缩文件                 FileStream fs = File.OpenRead(file);                 byte[] buffer = new byte[fs.Length];                 fs.Read(buffer, 0, buffer.Length);                 string tempfile = file.Substring(staticFile.LastIndexOf("") + 1);                 ZipEntry entry = new ZipEntry(tempfile);                 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, 0, buffer.Length);             }         }     } }
[u]复制代码[/u] 代码如下:
using System; using System.Data; using System.Web; using System.Text; using System.Collections; using System.IO; using System.Diagnostics; using System.Runtime.Serialization.Formatters.Binary; using ICSharpCode.SharpZipLib.BZip2; using ICSharpCode.SharpZipLib.Zip; using ICSharpCode.SharpZipLib.Zip.Compression; using ICSharpCode.SharpZipLib.Zip.Compression.Streams; using ICSharpCode.SharpZipLib.GZip; using ICSharpCode.SharpZipLib.Checksums; /// <summary> /// UnZipFloClass 的摘要说明 /// </summary> public class UnZipFloClass {     public string unZipFile(string TargetFile, string fileDir)     {         string rootFile = " ";         try         {             //读取压缩文件(zip文件),准备解压缩             ZipInputStream s = new ZipInputStream(File.OpenRead(TargetFile.Trim()));             ZipEntry theEntry;             string path = fileDir;                               //解压出来的文件保存的路径             string rootDir = " ";                                    //根目录下的第一个子文件夹的名称             while ((theEntry = s.GetNextEntry()) != null)             {                 rootDir = Path.GetDirectoryName(theEntry.Name);                                          //得到根目录下的第一级子文件夹的名称                 if (rootDir.IndexOf("") >= 0)                 {                     rootDir = rootDir.Substring(0, rootDir.IndexOf("") + 1);                 }                 string dir = Path.GetDirectoryName(theEntry.Name);                                    //根目录下的第一级子文件夹的下的文件夹的名称                 string fileName = Path.GetFileName(theEntry.Name);                                    //根目录下的文件名称                 if (dir != " " )                                                                            //创建根目录下的子文件夹,不限制级别                 {                     if (!Directory.Exists(fileDir + "" + dir))                     {                         path = fileDir + "" + dir;                                                                        //在指定的路径创建文件夹                         Directory.CreateDirectory(path);                     }                 }                 else if (dir == " " && fileName != "")                                                                 //根目录下的文件                 {                     path = fileDir;                     rootFile = fileName;                 }                 else if (dir != " " && fileName != "")                                                                 //根目录下的第一级子文件夹下的文件                 {                     if (dir.IndexOf("") > 0)                                                                                    //指定文件保存的路径                     {                         path = fileDir + "" + dir;                     }                 }                 if (dir == rootDir)                                                                                                      //判断是不是需要保存在根目录下的文件                 {                     path = fileDir + "" + rootDir;                 }                 //以下为解压缩zip文件的基本步骤                 //基本思路就是遍历压缩文件里的所有文件,创建一个相同的文件。                 if (fileName != String.Empty)                 {                     FileStream streamWriter = File.Create(path + "" + 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();             return rootFile;         }         catch (Exception ex)         {             return "1; " + ex.Message;         }     }   }
引用,新建一个页面,添加两个按钮,为按钮添加Click事件 源码如下
[u]复制代码[/u] 代码如下:
protected void Button1_Click(object sender, EventArgs e) {         string[] FileProperties = new string[2];         FileProperties[0] = "D:unzipped";//待压缩文件目录         FileProperties[1] = "D:zipa.zip";  //压缩后的目标文件         ZipFloClass Zc = new ZipFloClass();         Zc.ZipFile(FileProperties[0], FileProperties[1]); } protected void Button2_Click(object sender, EventArgs e) {         string[] FileProperties = new string[2];         FileProperties[0] = "D:zipb.zip";//待解压的文件         FileProperties[1] = "D:unzipped";//解压后放置的目标目录         UnZipFloClass UnZc = new UnZipFloClass();         UnZc.unZipFile(FileProperties[0], FileProperties[1]); }
希望本文所述对大家的asp.net程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部