zoukankan
html css js c++ java
在C#中运用SharpZipLib和unrar进行解压缩
using
System;
using
System.Collections.Generic;
using
System.Text;
using
System.IO;
using
ICSharpCode.SharpZipLib.Zip;
namespace
Campton.Tools
{
public
class
ZipManager
{
构造函数
#region
构造函数
public
ZipManager()
{ }
#endregion
私有静态变量
#region
私有静态变量
private
static
ZipManager _instance;
#endregion
静态方法
#region
静态方法
/**/
///
<summary>
///
创建实例方法
///
</summary>
///
<returns>
返回ZipManager对象实例
</returns>
public
static
ZipManager Instance()
{
if
(_instance
==
null
)
_instance
=
new
ZipManager();
return
_instance;
}
#endregion
公有方法
#region
公有方法
/**/
///
<summary>
///
解压文件
///
</summary>
///
<param name="zipFile">
zip文件(完整的绝对路径)
</param>
///
<param name="destFolder">
目标目录(绝对路径)
</param>
///
<returns>
是否解压成功(true 为成功 false 为失败)
</returns>
public
bool
UnCompress(
string
zipFile,
string
destFolder)
{
if
(
!
File.Exists(zipFile))
return
false
;
string
exts
=
Path.GetExtension(zipFile);
if
(
string
.Compare(exts,
"
.zip
"
,
true
)
==
0
)
{
return
UnZip(zipFile, destFolder);
}
else
if
(
string
.Compare(exts,
"
.rar
"
,
true
)
==
0
)
{
return
UnRar(zipFile, destFolder);
}
else
{
return
false
;
}
}
#endregion
私有方法
#region
私有方法
/**/
///
<summary>
///
对Zip文件进行解压
///
</summary>
///
<param name="zipFile">
zip文件(完整的绝对路径)
</param>
///
<param name="destFolder">
目标目录(绝对路径)
</param>
///
<returns>
是否解压成功(true 为成功 false 为失败)
</returns>
private
bool
UnZip(
string
zipFile,
string
destFolder)
{
if
(
!
File.Exists(zipFile))
return
false
;
if
(
!
Directory.Exists(destFolder))
Directory.CreateDirectory(destFolder);
FileInfo fi
=
new
FileInfo(zipFile);
try
{
using
(ZipInputStream zis
=
new
ZipInputStream(fi.OpenRead()))
{
ZipEntry ze;
while
((ze
=
zis.GetNextEntry())
!=
null
)
{
string
path
=
Path.Combine(destFolder, ze.Name);
if
(ze.IsDirectory)
{
Directory.CreateDirectory(path);
}
else
{
using
(Stream outStream
=
new
FileStream(path, FileMode.Create, FileAccess.Write, FileShare.Write))
{
int
size
=
2048
;
byte
[] data
=
new
byte
[size];
while
(size
>
0
)
{
size
=
zis.Read(data,
0
, data.Length);
outStream.Write(data,
0
, size);
}
outStream.Flush();
}
}
}
}
}
catch
(Exception)
{
return
false
;
}
return
true
;
}
/**/
///
<summary>
///
对RAR所支持的压缩文件进行解压
///
</summary>
///
<param name="zipFile">
压缩文件(完整的绝对路径)
</param>
///
<param name="destFolder">
目标目录(绝对路径)
</param>
///
<returns>
是否解压成功(true 为成功 false 为失败)
</returns>
private
bool
UnRar(
string
zipFile,
string
destFolder)
{
if
(
!
File.Exists(zipFile))
return
false
;
if
(
!
Directory.Exists(destFolder))
Directory.CreateDirectory(destFolder);
Unrar unRar
=
new
Unrar();
try
{
unRar.DestinationPath
=
destFolder;
unRar.Open(zipFile, Unrar.OpenMode.Extract);
while
(unRar.ReadHeader())
{
unRar.Extract();
}
return
true
;
}
catch
(Exception)
{
return
false
;
}
finally
{
if
(unRar
!=
null
)
{
unRar.Close();
unRar.Dispose();
}
}
}
#endregion
}
}
查看全文
相关阅读:
只能输入正整数 以及常用的正则表达式 (转载)
SVN cleanup操作反复失败解决办法 (转载)
关于${pageContext.request.contextPath}的理解 (转载)
Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds
一则Oracle EXP导出报错的解决办法(转载)
js数组的sort排序详解(转载)
JavaScript arguments对象(转载)
转 :meta name的含义
一些小问题
005.JMS可靠性机制
原文地址:https://www.cnblogs.com/afxcn/p/744234.html
最新文章
【数据结构】树的遍历
【转】分辨率、帧率和码率三者之间的关系
【Java】Files.readAllBytes(Path) 遇见的坑
【备忘】ffmpeg推流命令
【Java】Jackson解析xml的坑
【转-备忘】scatter函数
源文件封装为IP的步骤
转 linux 下装 usb driver
调试中的典型错误
multiboot 的golden image 和update image的 mcs文件的生成及调试
热门文章
icape3 的使用
modelsim 仿真xilinx fir ip
modelsim 的高效使用
建立时间、保持时间、建立余量、保持余量的理解
《灵魂冲浪者》——用坚强的、爱的灵魂迎接挫折
转载-----BUFG,IBUFG,BUFGP,IBUFGDS等含义以及使用
【转载】linux内核启动android文件系统过程分析
【团购活动】接口最全最好用的S5PV210开发板Sate210-F 开发板开始团购活动了,一起学习linux!
S5PV210之Sate210-F DIY硬件,移植uboot,kernel,android 活动现在已经进入实施阶段吗,欢迎广大网友参与 !
python3使用遇到的一些bug
Copyright © 2011-2022 走看看