c#解压缩文件(zip)
1.從服務下載壓縮包實現解壓縮( 使用ZipInputStream類需要在參考中引用ICSharpCode.SharpZipLib.dll)
# 包含壓縮包相同文件名的文件#不指定解壓路徑,可以直接用FileInfo來創建文件夾public static String Decompress(string Name){try{string path = " ";//读取压缩文件(zip文件),准备解压缩ZipInputStream zipInputStream = new ZipInputStream(File.Open(Name, FileMode.Open));ZipEntry zipEntryFromZippedFile;//解壓文件不為空(GetNextEntry() 取下一个ZIP文件条目并将该流定位在条目数据的开头,如果沒有則返回null)while ((zipEntryFromZippedFile = zipInputStream.GetNextEntry()) != null){FileInfo fInfo = new FileInfo(zipEntryFromZippedFile.Name);string filename = Path.GetFileName(zipEntryFromZippedFile.Name);//判斷文件夾是否存在zipEntryFromZippedFile.Name找到父目錄if (!fInfo.Directory.Exists){//創建文件夾 根據fInfo.Directory.Create();}//判斷是否是文件if (zipEntryFromZippedFile.IsFile){//創建文件FileStream file = fInfo.Create();if (filename == ConfigurationManager.AppSettings["ownerName"]){path = file.Name;}byte[] bufferFromZip = new byte[zipInputStream.Length];zipInputStream.Read(bufferFromZip, 0, bufferFromZip.Length);file.Write(bufferFromZip, 0, bufferFromZip.Length);file.Close();}}zipInputStream.Close();return path;}catch{throw;}}
#解压zip文件(不包含zip的文件夾)public static String Decompress(string Name , string fileDir){try{string path = " ";//读取压缩文件(zip文件),准备解压缩ZipInputStream zipInputStream = new ZipInputStream(File.Open(Name, FileMode.Open));ZipEntry zipEntryFromZippedFile ;//解壓文件不為空(GetNextEntry() 取下一个ZIP文件条目并将该流定位在条目数据的开头,如果沒有則返回null)while((zipEntryFromZippedFile=zipInputStream.GetNextEntry()) != null ){string filename = Path.GetFileName(zipEntryFromZippedFile.Name); string dir = Path.GetDirectoryName(zipEntryFromZippedFile.Name);string name= ConfigurationManager.AppSettings["name"].Split('.')[0];string str=" ";//判斷是否是文件夾if (zipEntryFromZippedFile.IsDirectory ){//判斷是否為解壓縮文件夾if (dir ==name){continue;}str = fileDir + @"\" + dir.Split('\\')[1];if (!Directory.Exists(str)){Directory.CreateDirectory(str); } }//判斷是否是文件if (zipEntryFromZippedFile.IsFile){//判斷是否為子文件下的文件if (dir != name && dir !=""){str = fileDir + @"\" + dir.Split('\\')[1] + @"\" + filename;}else{str = fileDir + @"\" + filename;}FileStream file = File.Create(str);if (filename == ConfigurationManager.AppSettings["ownerName"]){path = file.Name;}byte[] bufferFromZip = new byte[zipInputStream.Length];zipInputStream.Read(bufferFromZip, 0, bufferFromZip.Length);file.Write(bufferFromZip, 0, bufferFromZip.Length);file.Close();}}zipInputStream.Close();return path;}catch{throw;}}
2.第二種思路
/// <summary>/// 指定解压文件所在目錄/// </summary>/// <param name="TargetFile">壓縮文件所在目录</param>/// <param name="fileDir" >解壓文件所在目錄</param>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 name= ConfigurationManager.AppSettings["name"].Split('.')[0];//取下一个ZIP文件条目并将该流定位在条目数据的开头,如果沒有則返回nullwhile ((theEntry = s.GetNextEntry()) != null){string dir = Path.GetDirectoryName(theEntry.Name);//文件夹的名称string fileName = Path.GetFileName(theEntry.Name);//文件的名称if (dir != " " && fileName == "")//是文件夾的話創建文件夾{//不創建和壓縮文件名相同的文件夾/* if(dir==name){continue;}*/// path = fileDir + @"\" + dir.Split('\\')[1];path = fileDir + @"\" + dir;if (!Directory.Exists(path)){ //在指定的路径创建文件夹Directory.CreateDirectory(path);}}else if (dir == " " && fileName != "")//解壓文件只有一個文件的情況下{path = fileDir; }else if (dir != " " && fileName != " ")//是文件的時候{//指定文件保存的路径path=fileDir + @"\" + dir;/*if(dir!=name){path = fileDir + @"\" + dir.Split('\\')[1]; }else{path = fileDir;} */ }//創建文件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;}}
c#解压缩文件(zip)相关推荐
- Ubuntu下破暴力解压缩文件zip的密码
用Ubuntu下的frackzip工具破解zip的密码,注意此处只能破解zip的密码,对于rar.7z等类型的压缩文件暂时不支持破解. 步骤如下: 1.右键Ubuntu桌面,打开终端 2.在终端中输入 ...
- C#压缩、解压缩文件(夹)(rar、zip)
主要是使用Rar.exe压缩解压文件(夹)(*.rar),另外还有使用SevenZipSharp.dll.zLib1.dll.7z.dll压缩解压文件(夹)(*.zip).需要注意的几点如下: 1.注 ...
- Linux下的zip压缩解压缩文件夹
实例:压缩服务器上当前目录的内容为xxx.zip文件 zip -r xxx.zip ./* 解压zip文件到当前目录 unzip filename.zip ====================== ...
- Linux的压缩/解压缩文件命令 zip 和 tar
Linux的压缩/解压缩命令详解及实例 压缩服务器上当前目录的内容为xxx.zip文件 zip -r xxx.zip ./* 解压zip文件到当前目录 unzip filename.zip 另:有些服 ...
- PHP之Zip扩展,解压缩文件,ZipArchive类
PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启,具体开启方法就不说了,不同的平台开启PHP扩增的方法网上都有,如有 ...
- Linux 解压缩文件之zip命令
以下内容来自Linux命令大全 zip命令 zip命令可以用来解压缩文件,或者对文件进行打包操作.zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有".zip"扩展名的压缩 ...
- java实现rar格式,java解压缩文件的实现示例,支持rar和zip格式
[ 最近有个项目需要用Java做解压缩Zip文件,由于JDK自带的zip相关的类都不支持以中文命名的文件,所以在网上搜索了些资料,自己花了点时间研究了下.希望和大家分享下 解压ZIP需要用到 ...
- android zip解压出错,Android:解压缩文件会引发数据错误或CRC错误
我正在开发一个下载zip文件并在本地解压缩的项目.我遇到的问题是解压缩过程在5%的时间内起作用. 在这一点上,这对我来说是一个谜,因为有时它可以工作,但大多数时候它会抛出数据或crc错误.即使zip文 ...
- linux常用压缩、解压缩文件或文件夹命令tar、zip
前言 工作中,压缩.解压缩文件或文件夹是比较基本的操作了.利用 tar或zip 命令可以把一大堆的文件和目录打包成一个文件,这对于备份文件或是将几个文件组合成为一个文件进行网络传输是非常有用的. ta ...
- vb.net 解压缩(文件/文件夹解压缩,zip文件浏览,单文件解压,分卷压缩)
vb.net 解压缩(文件/文件夹解压缩,zip文件浏览,单文件解压,分卷压缩) DLL:Ionic.Zip.dll 说明: 1.解压/压缩 显示加密进度及总进度. 2.zip文件打开,浏览内部文件. ...
最新文章
- Hadoop简介(1):什么是Map/Reduce
- tp5循环查询语句_如何用Excel快速生成SQL语句,用过的人都说好
- VTK:网格之CellEdges
- 深度学习之 OHEM (Online Hard Example Mining)
- 如何系统地自学python100天_如何系统地自学 Python?
- scrapy使用crawlspider
- eclipse java import_java – Eclipse:将源代码的import文件夹导入...
- 设置、获得对话框中 编辑框控件 EDIT 的内容
- php分片数据库,4、PHP测试分片集群
- HTC公布多款Android新机系统内核源代码
- JLink引脚定义、JTAG引脚定义、SWD引脚定义
- 员工评分系统现场发布小感
- C. Make it Increasing
- Xtrareport 多栏报表
- 浮点数的指数函数的计算
- unlikely和likely的使用
- 计蒜课中沙子的质量(动态规划)感想
- emWin中文字库显示详细教程(简单直接)
- 自动转换15位身份证号码位18位
- 商业搜索引擎大行其道 未来规模将超越ERP