C#代码控制 zip rar 解压缩
首先 解压ZIP的方法:
#region 解压ZIP
/// <summary>
/// 解压ZIP
/// </summary>
/// <param name="zipFilePath">解压文件的物理地址</param>
/// <param name="savePath">存放解压后的文件物理地址</param>
/// <returns></returns>
private static bool UnZipFile(string zipFilePath, string savePath, out string Message)
{
Message = "";
bool result = true;
try
{
using (ZipInputStream s = new ZipInputStream(File.OpenRead(zipFilePath)))
{
ZipEntry theEntry;
while ((theEntry = s.GetNextEntry()) != null)
{
Console.WriteLine(theEntry.Name);
string directoryName = Path.GetDirectoryName(theEntry.Name);
string fileName = Path.GetFileName(theEntry.Name);
if (directoryName.Length > )
{
Directory.CreateDirectory(savePath + "/" + directoryName);
}
if (fileName != String.Empty)
{
using (FileStream streamWriter = File.Create(savePath + "/" + theEntry.Name))
{
int size = ;
byte[] data = new byte[];
while (true)
{
size = s.Read(data, , data.Length);
if (size > )
{
streamWriter.Write(data, , size);
}
else
{
break;
}
}
}
}
}
}
}
catch(Exception ex)
{
result = false;
Message = ex.Message;
}
return result;
}
#endregion
然后就是解压rar的方法:
#region 解压RAR
/// <summary>
/// 解压RAR
/// </summary>
/// <param name="destPath">解压的文件名</param>
/// <param name="savePath">解压的文件地址</param>
/// <returns></returns>
public bool UnRar(string fileRarName, string savePath, out string Message)
{
Message = "";
bool result = false;
ProcessStartInfo startinfo = new ProcessStartInfo(); ;
Process process = new Process();
string rarName = fileRarName; //将要解压缩的 .rar 文件名(包括后缀)
string path = savePath; //文件解压路径(绝对)
string rarPath = savePath; //将要解压缩的 .rar 文件的存放目录(绝对路径)
string rarexe = "WinRAR.exe"; //WinRAR安装位置 try
{
//解压缩命令,相当于在要压缩文件(rarName)上点右键->WinRAR->解压到当前文件夹
string cmd = string.Format("x {0} {1} -y",
rarName,
path);
startinfo.FileName = rarexe;
startinfo.Arguments = cmd; //设置命令参数
startinfo.WindowStyle = ProcessWindowStyle.Hidden; //隐藏 WinRAR 窗口 startinfo.WorkingDirectory = rarPath;
process.StartInfo = startinfo;
process.Start();
process.WaitForExit(); //无限期等待进程 winrar.exe 退出
if (process.HasExited)
{
result = true;
}
}
catch (Exception ex)
{
result = false;
Message = ex.Message;
Framework.Core.Logging.LogManager.GetCurrentClassLogger().Fatal("在线阅读电子会刊异常:" + ex.ToString());
}
finally
{
process.Dispose();
process.Close();
}
return result;
}
#endregion
然后就是一些文件夹之间的操作:
/// <summary>
/// 删除所有文件(文件夹)包括本身
/// </summary>
/// <param name="dir"></param>
public void DeleteFolderAll(string dir)
{
if (Directory.Exists(dir)) //如果存在这个文件夹删除之
{
foreach (string d in Directory.GetFileSystemEntries(dir))
{
if (File.Exists(d))
File.Delete(d); //直接删除其中的文件
else
DeleteFolderAll(d); //递归删除子文件夹
}
Directory.Delete(dir, true); //删除已空文件夹
}
} /// <summary>
/// 删除某个路径下的所有东西
/// </summary>
/// <param name="dirPath"></param>
public static void DeleteFolder(string dirPath)
{
if (Directory.Exists(dirPath))
{
foreach (string content in Directory.GetFileSystemEntries(dirPath))
{
if (Directory.Exists(content))
{
Directory.Delete(content, true);
}
else if (File.Exists(content))
{
File.Delete(content);
}
}
}
}
好了,结束!
C#代码控制 zip rar 解压缩的更多相关文章
- Android中用Java代码实现zip文件解压缩
如果需要下载的文件有很多是中文名的,解压时有中文名的文件出现乱码,试了很多方法不能解决问题.据说有一个Java插件包,用这个插件包可以解决中文名乱码的问题,但不知解压的文件是否要用它提供的类压缩后的文 ...
- Android Zip文件解压缩代码
2011-04-01 17:58:52| 分类: Android |举报 |字号 订阅 在Android平台中如何实现Zip文件的解压 缩功能呢? 因为Android内部已经集成了zlib库,对 ...
- (转载)linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结
linux下tar.gz.tar.bz2.zip等解压缩.压缩命令小结 bz2 tgz z等众多压缩文件的压缩与解压方法,需要的朋友可以参考下 1) Linux下最常用的打包程序就是tar了,使用ta ...
- java Zip文件解压缩
java Zip文件解压缩 为了解压缩zip都折腾两天了,查看了许多谷歌.百度来的code, 真实无语了,绝大多数是不能用的.这可能跟我的开发环境有关吧. 我用的是Ubuntu14.04,eclips ...
- java上传图片到数据库,涉及压缩文件zip/rar上传等
项目中有这个需求: 1)上传文件通过公司平台的校验,校验成功后,通过接口,返回文件流: 2)我们根据这个文件流进行操作.这里,先将文件流复制文件到项目临时目录WEB-INF/temp;文件使用完毕,删 ...
- springMvc上传文件、读取zip/rar文件
参考文章: http://www.cnblogs.com/interdrp/p/6734033.html 方法一: 1)没有配置org.springframework.web.multipart.co ...
- atitit.提取zip rar文件列表 java php c# 的原理与设计
atitit.java提取zip rar文件列表 1. 取zip rar文件的场景问题 1 1.1. 多重压缩的问题 1 1.2. 文件名编码的问题 1 1.3. 目录的判定 1 2. rar的解析 ...
- zip,rar及linux下常用的压缩格式
日常操作中我们经常使用到文件压缩操作,其使用一些特定的算法来减小文件的大小,可以提高传输数据时的速率和减少数据在一些存储机制上占有的空间大小,实现空间利用最大化. 比如:如果你想通过邮箱发送一个文件夹 ...
- iOS如何用代码控制以不同屏幕方向打开新页面?
转载:http://blogread.cn/it/article/7765?f=wb#original 代码示例:https://github.com/johnlui/Swift-On-iOS/tre ...
随机推荐
- Linux 文件系统同步
同步就是将物理内存中dirty的页写入到磁盘中,保证磁盘和物理页之间的内容一致. 触发同步操作的时机: 1.周期性内核线程,扫描脏页,根据一定的规则选择脏页,将页写回到磁盘. 2.如果内核中的脏页过多 ...
- 腾讯TT浏览器应用程序发生异常(0xc0000409) 位置为0x027a1f7f 的解决办法
2013年8月26日下午,腾讯TT浏览器 4.8版1000 出现“应用程序发生异常(0xc0000409) 位置为0x027a1f7f ”的错误,导致浏览器自动关闭. 无论重新卸载安装还是 清理系统 ...
- pyqt QTreeWidget例子学习
# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' from PyQt4.QtGui import * from Py ...
- strut2 自己定义文件上传错误信息
在文件上传过程中我们能够指定拦截器对文件类型.后缀名.大小进行设定,action中的配置: <interceptor-ref name="fileUpload"> &l ...
- [Spring入门学习笔记][创建网站URL]
设计网站的URL 现代的Web站点都会设计一套拥有明确意义,方便用户记忆的URL,不论是域名还是路径,以天码营为例: http://tianmaying.com/courses表示网站下所有的课程列表 ...
- 纯html网页重定向与跳转
javaScript 跳转 方法一: <script language="javascript"> window.location = "http:// ...
- css盒子模型,定位,浮动
1.盒子模型 Margin(外边距) - 清除边框外的区域,外边距是透明的. Border(边框) - 围绕在内边距和内容外的边框. Padding(内边距) - 清除内容周围的区域,内边距是透明的. ...
- A Bit Of Knowledge
iOS推崇使用png格式的图片,说这样不会失帧 imageNamed 和 imageWithContentOfFile的区别 imageNamed会使用系统缓存,对重复加载的图片速度会快一些,效果好. ...
- //NSUserDeafult 图片的保存与读取
//NSUserDeafult保存图片数据到本地 -(void)saveImage:(UIImage *)image{ NSData* data=[NSKeyedArchiver archivedDa ...
- C#避免过长的IF和Switch分支的方法
C#避免过长的IF和Switch分支的方法 1.最蠢形态 //很丑有没有! //这个分支要是一两个还是可以接受的 class Program { static void Main(string[] a ...