读取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 ...
随机推荐
- dtree实现上下级关系的显示
在实际开发中我们常常要涉及到到在页面上显示上下级关系这样的需求 ,我的实现方法: 环境:S2SH+mysql 数据库结构如下图: 其中mgr字段是指经理,也就是自己的上一级 映射信息: Action和 ...
- C语言序列点浅析
摘要: 现行国内的C语言教材普遍不介绍序列点,这使得读者只能“死记硬背”有序列点表达式的求值顺序,不仅造成了读者对C语言知识的认知残缺不全,而且也影响了读者学习的积极性.本文总结了序列点的作用,即表达 ...
- 保护模式特权级别DPL,RPL,CPL 之间的联系和区别
RPL是段选择子里面的bit 0和bit 1位组合所得的值,但这里要首先搞清楚什么是段选择子,根据Intel 的文件(IA-32 IntelR Architecture Software Develo ...
- java.sql.Types,数据库字段类型,java数据类型的对应关系
以下转自:http://kummy.itpub.net/post/17165/172850 本文在原文基础上有增减. 本概述是从<JDBCTM Database Access from Java ...
- Hibernate介绍和入门案例
一身转战三千里,一剑曾当百万师 如果你在之前没有学过SSH三大框架,那么你之前肯定是通过JDBC来对数据库进行操作.现在,你完全可以把跟数据库交互的操作直接交给Hibernate. Hibernate ...
- 项目上传svn出问题
我在自己的笔记本上(win8),安装了tortoise 1.9.4和visualSVN server 3.5.3.我现在想让eclipse的自带的svn插件连接到本地服务器的资源库上.但是我写http ...
- codevs1028花店橱窗布置(费用流)
这几天刚学了费用流,找到了这道题来练一练手. 题目: 题目描述 Description 假设以最美观的方式布置花店的橱窗,有F束花,V个花瓶,我们用美学值(一个整数)表示每束花放入每个花瓶所产生的美学 ...
- C++ 处理 utf-8
类似"abc汉字"这样的字符串是以utf-8编码; C++ 的 cout执行的操作是把参数发送给stdout,因此如果终端支持utf-8, 汉字可以使用cout打印: 比较好的办法 ...
- Top 20 JavaScript Projects of 2017
https://www.youtube.com/watch?v=SUMn8y3pi28 20. AngularJS 1 19. Passport 18. Pug 17. Socket.IO 16. J ...
- netty高级篇(3)-HTTP协议开发
一.HTTP协议简介 应用层协议http,发展至今已经是http2.0了,拥有以下特点: (1) CS模式的协议 (2) 简单 - 只需要服务URL,携带必要的请求参数或者消息体 (3) 灵活 - 任 ...