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
}
}
查看全文
相关阅读:
Goahead 3.1.0 发布,嵌入式 Web 服务器
jdao 1.0.2 发布,轻量级的orm工具包
pythonbitstring 3.1.0 发布
JavaScript 搜索引擎 lunr.js
Difeye 1.1.4 版本发布
Chronon 3.5 发布,支持 Java 7
性能扩展的那些事儿:一味增加硬件并不能解决响应时间问题
Eclipse SDK 4.2.2/Equinox 3.8.2 发布
Linux Kernel 3.8.1 发布
Armadillo C++ Library 3.800 发布
原文地址:https://www.cnblogs.com/afxcn/p/744234.html
最新文章
SQL: C# 批量插入表
SqlBulkCopy与触发器,批量插入表(存在则更新,不存在则插入)
App.config :微软出于性能考虑,对ConfigurationManager采用了缓存策略
CodeRush Xpress for C#的菜单在Visual Studio 2010 下显示
关于元数据存储区MetadateStore及AttributeTableBuilder
Web应用程序中关于图片的使用
Wing IDE 4.1.11 发布,Python 集成开发环境
推荐 2013 年最新的 10 款 jquery 插件
PhoneGap 2.5.0 发布
Entity Framework 6 Alpha 3为Code First提供对存储过程支持,并提供连接恢复功能
热门文章
Snort 2.9.4.1 发布
Brent Ozar谈如何提高SQL Server的生产力
NetXMS 1.2.6 发布,系统监控工具
JUnitBenchmark
CyanogenMod 10.1 M2 发布
Kryo 2.21 发布,高性能 Java 序列化器
PHP框架 Phalcon 1.0.0 beta发布,实测性能强劲
微软开源C++ REST SDK——Casablanca
Linux 3.9 将包含哪些新特性?
Botan 1.10.6 发布,C++ 加密算法库
Copyright © 2011-2022 走看看