读取Zip文件内容
第一步,上次文件并保存到服务器目录下
/// <summary>
/// 上传压缩文件
/// </summary>
protected void UploadZip()
{
//定义上传文件暂存目录
string uploadDic = @"C:\Test\";
//判断是否选择文件
if (FileUpload1.FileName.Length > )
{
//判断文件格式
if (FileUpload1.FileName.EndsWith(".zip"))
{
//判断上传文件目录是否存在
if (!Directory.Exists(uploadDic))
{
//不存在则创建该目录
Directory.CreateDirectory(uploadDic);
}
//在服务器上存储压缩文件
FileUpload1.SaveAs(uploadDic + FileUpload1.FileName);
UnpackZip(uploadDic + FileUpload1.FileName, uploadDic + FileUpload1.FileName.Substring(, FileUpload1.FileName.Length - ) + @"\");
}
}
}
第二步,解压该文件并创建临时文件目录,需引用外部组件ICSharpCode.SharpZipLib.dll
/// <summary>
/// 解压文件
/// </summary>
/// <param name="zipDir">压缩文件目录</param>
/// <param name="fileDir">解压目录</param>
/// <returns></returns>
protected void UnpackZip(string zipDir, string fileDir)
{
try
{
//创建解压文件目录
if (!Directory.Exists(fileDir))
{
Directory.CreateDirectory(fileDir);
}
//创建Zip输出流
ZipInputStream zipStream = new ZipInputStream(File.OpenRead(zipDir));
ZipEntry theEntry;
//逐级打开压缩文件
while ((theEntry = zipStream.GetNextEntry()) != null)
{
//获取打开目录的名称
string dirName = Path.GetDirectoryName(theEntry.Name);
//获取文件的名称
string fileName = Path.GetFileName(theEntry.Name);
if (dirName != String.Empty)
{
//根据目录名称创建新的目录
Directory.CreateDirectory(fileDir + dirName);
}
if (fileName != String.Empty)
{
//写入文件内容
FileStream fileSteam = File.Create(fileDir + theEntry.Name);
int size = ;
byte[] data = new byte[size];
while (true)
{
size = zipStream.Read(data, , data.Length);
if (size > )
{
fileSteam.Write(data, , size);
}
else
{
break;
}
}
fileSteam.Close();
}
}
zipStream.Close();
//读取解压文件
ReadDirectory(fileDir);
//删除解压目录
DeleteTempDirectory(fileDir);
}
catch (Exception e)
{
throw new IOException("文件内容异常"+e.Message);
}
}
第三步,读取临时文件内容
/// <summary>
/// 读取解压文件内容
/// </summary>
/// <param name="fileDir">解压目录</param>
protected void ReadDirectory(string fileDir)
{
//获取解压文件下所有文件
string[] files = Directory.GetFiles(fileDir);
if (files.Count() > )
{
//循环获取文件
foreach (string file in files)
{
//如果是XML则
//XmlDocument doc = new XmlDocument();
//doc.Load(file); //获取单个文件
Directory.GetFiles(file);
//读取文件进行数据处理...
}
}
}
第四步,删除临时目录
/// <summary>
/// 删除临时解压目录
/// </summary>
/// <param name="fileDir"></param>
protected void DeleteTempDirectory(string fileDir)
{
if (Directory.Exists(fileDir))
{
//删除该目录及该目录下的所有文件
Directory.Delete(fileDir, true);
}
}
读取Zip文件内容的更多相关文章
- 五种方式让你在java中读取properties文件内容不再是难题
一.背景 最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供java程序动态的读取,修改变量,不再需要修改代码的问题.就借此机会把Spring+SpringMVC ...
- PHP读取Excel文件内容
PHP读取Excel文件内容 项目需要读取Excel的内容,从百度搜索了下,主要有两个选择,第一个是PHPExcelReader,另外一个是PHPExcel. PHPExcelReader比较 ...
- 手工创建tomcat应用,以及实现js读取本地文件内容
手工创建tomcat应用: 1.在webapps下面新建应用目录文件夹 2.在文件夹下创建或是从其他应用中复制:META-INF,WEB-INF这两个文件夹, 其中META-INF清空里面,WEB-I ...
- 使用POI读取excel文件内容
1.前言 项目中要求读取excel文件内容,并将其转化为xml格式.常见读取excel文档一般使用POI和JExcelAPI这两个工具.这里我们介绍使用POI实现读取excel文档. 2.代码实例: ...
- php zip文件内容比較类
php zip 文件比較类,比較两个zip文件的内容,返回新增,删除,及同样的文件列表.临时仅仅支持单层. 需求:上传一个zip文件,zip内有非常多图片文件.须要对图片文件进行一系列非常耗时的处理. ...
- java读取txt文件内容
package read; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; public ...
- 读取Pdm文件内容(含源码)
Pdm文件,就是PowerDesigner软件生成的文件,用来设计数据库表结构非常适合.其实,它的文件存储格式就是Xml,网上有很多代码,可以读取pdm文件内容.代码可以使用,但一般只能读取简单的pd ...
- 深入学习python解析并读取PDF文件内容的方法
这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...
- java 读取Zip文件进行写入
直接读取ZIp文件读取写入到别的文件中. package jp.co.misumi.mdm.batch; import java.io.BufferedReader; import java.io.F ...
随机推荐
- React的生命周期
我们先来看一张图,其实看完这张图基本就懂了,如果还不懂,请继续往下看. getDefaultProps 执行过一次后,被创建的类会有缓存,映射的值会存在this.props,前提是这个prop不是父组 ...
- oc之对象作为类的属性
对象做为类的属性 1. 一个Target中的类无法直接在另外1个Target中访问. 2. 类的属性代表什么? a. 类的属性代表这类事物具有的共同的特征 b. 类的属性代表这个类所拥有的东西. 灯: ...
- 【翻译】Asp.net Core介绍
ASP.NET Core is a significant redesign of ASP.NET. This topic introduces the new concepts in ASP.NET ...
- CMD杀进程 例如:杀8080端口的进程
首先:端口被占用的报错形式如下 说明8080端口被占用 解决方案一:查找pid,根据pid去任务管理器的进程中结束占用8080端口号的进程 1.首先按快捷键windows+R,在运行框里输入cmd,如 ...
- Java动态代理简单应用
概念 代理模式是基本的设计模式之一,它是开发者为了提供额外的或不同的操作,而插入的用来代替“实际”对象的对象.这些操作通常涉及与“实际”对象的通信,因此代理通常充当着中间人的角色. Java动态代理比 ...
- TMCache
TMCache设计的目的是用于存储临时持久化对象的开源iOS/OS key/value缓存类库,减少重复创建像下载数据.缓慢的处理结果这样的昂贵性能花销.TMCache由两个本身相似的存储组成,一个 ...
- mongodb tip-1
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px "Helvetica Neue"; color: #454545 } p. ...
- angular1 实现页面切换及tag页面
tag页面实现<div class="b_gray" style="padding-left:24px;border-bottom:1px solid #ccc&q ...
- linux标准输入输出2>&1
linux中有三种标准输入输出,分别是STDIN,STDOUT,STDERR,对应的数字是0,1,2. STDIN是标准输入,默认从键盘读取信息:STDOUT是标准输出,默认将输出结果输出至终 ...
- Information:java: javacTask: 源发行版 1.8 需要目标发行版 1.8
1,Project Structure里确认两个地方:Project sdk以及project language level 2,Project Structure->Modules里Sourc ...