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
}
}
查看全文
相关阅读:
Python解析Yahoo的XML格式的天气预报数据
如何卸载wineQQ?
纪念我的第一篇
hihocoder1062 最近公共祖先·一
hihocoder1055 刷油漆(树形DP)
hihocoder1050 树中的最长路径
hihocoder1049 根据二叉树的先序序列和中序序列求后序序列
hihocoder1044 状态压缩
hihocoder1043 完全背包
hihocoder1038 01背包
原文地址:https://www.cnblogs.com/afxcn/p/744234.html
最新文章
树莓派4b安装ubuntu+ros
关于ros中的参数函数
ros与moveit
ros和V_REP仿真编译
ros建模坐标
关于xml中"xmlns"
ros模型建立——urdf
Sqoop工具
数据处理框架:Pig
分布式日志收集系统:Flume
热门文章
Hadoop集群环境安装
MarkDown 的使用学习
Linux 多线程编程
Linux shell 脚本(三)
Linux shell 脚本(二)
Linux shell 脚本(一)
scala开发环境安装
UML类图
ubuntu中eclipse 不支持gbk编码问题解决办法
Learn HTML5 in 5 Minutes!
Copyright © 2011-2022 走看看