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
}
}
查看全文
相关阅读:
软件测试跟踪工具Bugzilla的安装
Linux必备命令
BPM Activiti5 学习资料
23种Java设计模式-传智播客课程
linux svn 启动 关闭
JQuery调用iframe子页面函数/对象的方法
判断 iframe 是否加载完成的完美方法
java获得数据库信息常用API(DatabaseMetaData)示例
JS动态修改页面EasyUI datebox不生效、EasyUI动态添加Class、EasyUI动态渲染解析解决方案
旧金山大学的算法可视化学习教程 赞的教程,将抽象的算法可视化,易于理解
原文地址:https://www.cnblogs.com/afxcn/p/744234.html
最新文章
shell printf命令:怎样格式化输出语句
Java 多重catch语句的具体使用介绍
Java try和catch的使用介绍
C++字符串和string类介绍
Java throw:异常的抛出怎么回事
Java import以及Java类的搜索路径
大小写转换
禁止缓存
给Java新手的一些建议——Java知识点归纳(Java基础部分)
FONT Awesome 图标
热门文章
== 和 equals 方法的区别
& 和&& 的区别
阿里云PTS分享-用性能测试工具JMeter实现基于供应链业务上对于WebSocket 协议的压测
Jmeter常见报错信息: ERROR
禅道的数据库配置: 禅道无法保存贴图
禅道项目管理软件-Linux上一键安装
测试管理工具
Tuleap administration 管理员页面中项目的配置页面
Git错误:unable to access 'https://git.voicegu.com/qa/qa.git/': SSL certificate problem: unable to get local issuer certificate
Git的安装和配置 -入门
Copyright © 2011-2022 走看看