using System;
using System.Collections.Generic;
using
System.Text;
using System;
using System.Collections.Generic;
using
System.Diagnostics;
using System.Configuration;
using System.IO;
using
System.IO.Compression;
using ICSharpCode.SharpZipLib.Zip;
using
Microsoft.Win32;
namespace
RST_ReadSDData.APP_Code
{
public class
UnPackFile
{
public UnPackFile()
{
//
//TODO:
在此处添加构造函数逻辑
//
}
#region 解压文件
包括.rar 和zip
///
<summary>
///解压文件
///
</summary>
/// <param
name="fileFromUnZip">解压前的文件路径(绝对路径)</param>
/// <param
name="fileToUnZip">解压后的文件目录(绝对路径)</param>
public static void UnpackFileRarOrZip(string fileFromUnZip, string
fileToUnZip)
{
//获取压缩类型
string unType = fileFromUnZip.Substring(fileFromUnZip.LastIndexOf(".") + 1,
3).ToLower();
switch
(unType)
{
case
"rar":
UnRar(fileFromUnZip,
fileToUnZip);
break;
case
"zip":
UnZip(fileFromUnZip,
fileToUnZip);
break;
}
}
#endregion
#region 解压文件 .rar文件
///
<summary>
///
解压
///
</summary>
/// <param
name="unRarPatch"></param>
/// <param
name="rarPatch"></param>
/// <param
name="rarName"></param>
///
<returns></returns>
public static void UnRar(string fileFromUnZip, string
fileToUnZip)
{
string
the_rar;
RegistryKey
the_Reg;
object
the_Obj;
string
the_Info;
try
{
the_Reg =
Registry.LocalMachine.OpenSubKey(
@"SOFTWARE\Microsoft\Windows\CurrentVersion\App
Paths\WinRAR.exe");
the_Obj =
the_Reg.GetValue("");
the_rar =
the_Obj.ToString();
the_Reg.Close();
//the_rar = the_rar.Substring(1, the_rar.Length -
7);
if (Directory.Exists(fileToUnZip) ==
false)
{
Directory.CreateDirectory(fileToUnZip);
}
the_Info = "x " + Path.GetFileName(fileFromUnZip) + " " + fileToUnZip + "
-y";
ProcessStartInfo the_StartInfo = new
ProcessStartInfo();
the_StartInfo.FileName =
the_rar;
the_StartInfo.Arguments =
the_Info;
the_StartInfo.WindowStyle =
ProcessWindowStyle.Hidden;
the_StartInfo.WorkingDirectory =
Path.GetDirectoryName(fileFromUnZip);//获取压缩包路径
Process the_Process = new
Process();
the_Process.StartInfo =
the_StartInfo;
the_Process.Start();
the_Process.WaitForExit();
the_Process.Close();
}
catch
(Exception
ex)
{
throw ex;
}
//return
unRarPatch;
}
#endregion
#region 解压文件 .zip文件
///
<summary>
///
解压功能(解压压缩文件到指定目录)
///
</summary>
/// <param
name="FileToUpZip">待解压的文件</param>
/// <param
name="ZipedFolder">指定解压目标目录</param>
public static void UnZip(string FileToUpZip, string
ZipedFolder)
{
if
(!File.Exists(FileToUpZip))
{
return;
}
if
(!Directory.Exists(ZipedFolder))
{
Directory.CreateDirectory(ZipedFolder);
}
ZipInputStream s =
null;
ZipEntry theEntry =
null;
string
fileName;
FileStream streamWriter =
null;
try
{
s = new
ZipInputStream(File.OpenRead(FileToUpZip));
while ((theEntry = s.GetNextEntry()) !=
null)
{
if (theEntry.Name !=
String.Empty)
{
fileName = Path.Combine(ZipedFolder,
theEntry.Name);
///判断文件路径是否是文件夹
if (fileName.EndsWith("/") ||
fileName.EndsWith("\\"))
{
Directory.CreateDirectory(fileName);
continue;
}
streamWriter =
File.Create(fileName);
int size =
2048;
byte[] data = new
byte[2048];
while
(true)
{
size = s.Read(data, 0,
data.Length);
if (size >
0)
{
streamWriter.Write(data, 0,
size);
}
else
{
break;
}
}
}
}
}
finally
{
if (streamWriter !=
null)
{
streamWriter.Close();
streamWriter =
null;
}
if (theEntry !=
null)
{
theEntry =
null;
}
if (s !=
null)
{
s.Close();
s =
null;
}
GC.Collect();
GC.Collect(1);
}
}
#endregion
}
}
文件解压缩公用类
时间: 2024-12-07 18:51:00
文件解压缩公用类的相关文章
自动化测试框架-----公用类
其中文件公用类如下: import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import j
RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2 新增解压缩工具类ZipHelper
在项目对文件进行解压缩是非常常用的功能,对文件进行压缩存储或传输可以节省流量与空间.压缩文件的格式与方法都比较多,比较常用的国际标准是zip格式.压缩与解压缩的方法也很多,在.NET 2.0开始,在System.IO.Compression中微软已经给我们提供了解压缩的方法GZipStream.对于GZipStream的使用以及优缺点网上已经有非常多的文章,本文主要讲的是利用三方开源组件ICSharpCode.SharpZipLib进行文件的解压缩. SharpZipLib地址:http://w
一个异步加载图片的公用类: EGOImageLoading
逛论坛的时候,发现偶尔还会有人在问怎么做图片的异步加载,很多回答都还是告知用原始的connection,收到数据NSData以后,再用UIImage initWithData生成图片对象.对于刚开始接触iOS开发的人来说,我还是推荐用这种方式的.但是对于已经有一定iOS开发经验的人来说,我推荐你们用比较成熟的第三方公用类.为什么这么说呢,1) 首先图片异步加载属于一个公共的问题空间,这部分的代码,对于所有需要加载网络图片的项目,逻辑都是一样的,也就是我们应 该把这部分代码做成可重用的,或
ZIP解压缩工具类
import java.io.File; import org.apache.tools.ant.Project; import org.apache.tools.ant.taskdefs.Expand; import org.apache.tools.ant.taskdefs.Zip; import org.apache.tools.ant.types.FileSet; /** * ZIP解压缩工具类 */ public class Zipper { // ZIP解压缩时 public fin
ajax结合文件上传类进行多文件的单个上传
今天做项目的时候碰见一个问题:之前一个同事离职之前做了一个网站,有一个上传商品详细图片的功能,当时已经完成,但是由于后期程序的有更改以及更改的程序员的水平也是参差不齐,最后导致程序bug很多,由于当时用的是一个框架,最终也没找到说明文档,后来我就重新写了一个结合ajax上传文件的upload.classs.php虽然界面欠缺美观,但是通俗易懂好维护. //首先是页面. index.php <!DOCTYPE html> <html lang="en"> <
Volley随笔之文件缓存DiskBasedCache类
Volley提供了一个基于文件的缓存类DiskBasedCache保存缓存数据.这个类完成缓存工作的原理大致如此,首先声明一个文件夹,文件夹下的文件与cacheKey一一对应,也就是说每一个文件时不同网络请求的返回数据.文件的格式是这样,文件头是数据结构CacheHeader,描述了缓存的信息,之后就是缓存数据. 下面是DiskBasedCache的代码,不得不说很优美! /* * Copyright (C) 2011 The Android Open Source Project * * L
CFileDialog(文件夹对话框类)和CFontDialog(字体设置对话框类)的使用学习
CFileDialog(文件夹对话框类) 主要用于文件的保存,另存,打开,关闭等功能 功能“另存为”的实现: 1 void CTXTDlg::OnFileSaveas() 2 { 3 LPCTSTR szFilter = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*||"; //过滤器设置,注意格式 4 CFileDialog fd(FALSE,"txt",NULL,OFN_OVERWRITEPROMPT|OFN_PATHMUSTEXIST| /
C#读取XML文件的基类实现
刚到新单位,学习他们的源代码,代码里读写系统配置文件的XML代码比较老套,直接写在一个系统配置类里,没有进行类的拆分,造成类很庞大,同时,操作XML的读写操作都是使用SetAttribute和node.Attribute(name)方法,因此,想到结合之前所做的XML操作,完成了一个能够读取XML文件的基类,便于以后的使用. PS:即使再老套的代码,目前也不敢进行优化,一是水平不行,二是不敢. 使用静态扩展类,扩展了几个经常使用的类型,能够方便数据的读写. 操作XML的类,可以直接继承BaseL
文件中的类都不能进行设计,因此未能为该文件显示设计器 VS2008(Visual Studio 2008) x64
项目属性 运行平台x64 Form2 继承 Form1 , Form2 设计器 报错 64位dll 无法加载 DLL 找不到指定的模块 原因Vs2008(Visual Studio 2008)默认 没安装64编译器 安装参照:<http://blog.csdn.net/clever101/article/details/8844314> 安装sp1补丁会报这个, 安装目录:D:\Program Files (x86)\Microsoft Visual Studio 9.0\Microsoft