第一步,上次文件并保存到服务器目录下

   /// <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文件内容的更多相关文章

  1. 五种方式让你在java中读取properties文件内容不再是难题

    一.背景 最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供java程序动态的读取,修改变量,不再需要修改代码的问题.就借此机会把Spring+SpringMVC ...

  2. PHP读取Excel文件内容

    PHP读取Excel文件内容   项目需要读取Excel的内容,从百度搜索了下,主要有两个选择,第一个是PHPExcelReader,另外一个是PHPExcel.   PHPExcelReader比较 ...

  3. 手工创建tomcat应用,以及实现js读取本地文件内容

    手工创建tomcat应用: 1.在webapps下面新建应用目录文件夹 2.在文件夹下创建或是从其他应用中复制:META-INF,WEB-INF这两个文件夹, 其中META-INF清空里面,WEB-I ...

  4. 使用POI读取excel文件内容

    1.前言 项目中要求读取excel文件内容,并将其转化为xml格式.常见读取excel文档一般使用POI和JExcelAPI这两个工具.这里我们介绍使用POI实现读取excel文档. 2.代码实例: ...

  5. php zip文件内容比較类

    php zip 文件比較类,比較两个zip文件的内容,返回新增,删除,及同样的文件列表.临时仅仅支持单层. 需求:上传一个zip文件,zip内有非常多图片文件.须要对图片文件进行一系列非常耗时的处理. ...

  6. java读取txt文件内容

    package read; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; public ...

  7. 读取Pdm文件内容(含源码)

    Pdm文件,就是PowerDesigner软件生成的文件,用来设计数据库表结构非常适合.其实,它的文件存储格式就是Xml,网上有很多代码,可以读取pdm文件内容.代码可以使用,但一般只能读取简单的pd ...

  8. 深入学习python解析并读取PDF文件内容的方法

    这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...

  9. java 读取Zip文件进行写入

    直接读取ZIp文件读取写入到别的文件中. package jp.co.misumi.mdm.batch; import java.io.BufferedReader; import java.io.F ...

随机推荐

  1. ajax实现分页

    使用ajax分页原理:第一步:做一个表格 第二步:封装两个方法.第三步:新建个负责显示页面.第四步:做一个纯PHP处理页面处理要显示页的所有数据 首先使用一张数据比较多的数据库中的表格: 首页面加载后 ...

  2. 数据库(MySQL)表基本操作

                                    数据库表基本操作 思前想后,最终还是把博客的名字改成了数据库表基本操作,以前叫SQL语句大全,感觉用"大全"这个名词 ...

  3. Linux学习笔记(一):常用命令(2)

    3.帮助命令 A,帮助命令:man    B,其他帮助命令 3.1,格式:man [命令名] 查看命令拥有哪个级别的帮助:                                       ...

  4. springMVC框架中json处理

    1.在项目中导入jackson-core.jar包 2.使用@ResponseBody注解,此注解会自动装换为json 如图: 3.如此,便可以得到json对象

  5. 校门外的树 OpenJudge 1.6.06

    06:校门外的树 总时间限制:  1000ms 内存限制:  65536kB 描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0 ...

  6. ubuntu16.04 samba 配置

    samba是一个很有用的在Linux和Windows之间共享文件的服务器程序,在工作的时候一直在使用,不过都是别人配置好的环境,自已一直没有配置过Samba服务器,今天尝试着自己配置的一次遇到了很多的 ...

  7. netty入门篇(1)

    上一篇 nio简介  下一篇 netty中级篇(2) 一.为什么选择Netty Netty是最流行的框架之一.健壮性.功能.性能.可定制性和可扩展性在同类框架中首屈一指,因此被大规模使用,例如ROCK ...

  8. 5754Life Winner Bo

    给定一个n*m的矩阵,有四种棋子(国际象棋的王,王后,骑士,车).起点在(1,1)先走到(n,m)获胜. 分析:车是nim博弈.王后是威佐夫博弈.王和骑士写两个1000*1000的预处理即可. hdu ...

  9. 第一百二十三节,JavaScript错误处理与调试

    JavaScript错误处理与调试 学习要点: 1.浏览器错误报告 2.错误处理 3.错误事件 4.错误处理策略 5.调试技术 6.调试工具 JavaScript在错误处理调试上一直是它的软肋,如果脚 ...

  10. CC版本添加 LUCI

    BB版本的时候,在 feeds/luci/contrib/package/luci下的Makefile文件添加上需要编译的 luci-application即可. 在CC版里改为:Feeds/luci ...