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

   /// <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. webpack中加载CSS

    webpack强大之处在于可以将CSS当做一个资源模块进行管理和加载 基本使用: 安装webpack的加载插件style-loader和css-loader: npm install style-lo ...

  2. 【CSS学习笔记】CSS初始化

    腾讯QQ官网(http://www.qq.com)样式初始化 body,ol,ul,h1,h2,h3,h4,h5,h6,p,th,td,dl,dd,form,fieldset,legend,input ...

  3. hdu1039

    #include<stdio.h>#include<string.h>const int MAXN=200;char str[MAXN]; bool isvowel(char ...

  4. D3.js

    html代码: <div id="id"> <p>Apple</p> <p id="aa">Pear</p ...

  5. 图片,音频资源预加载和文档dom加载

    在项目中遇到一个问题,ajax请求音频资源,然后动态的插入到文档中,其中.原生的音频外观实在太丑了,而且每个浏览器的样式都不一样,采取了一个audio插件. 就遇到一个问题,请求后的直接调用插件的话, ...

  6. jquery 自动触发事件 trigger

    trigger() 栗子: 需求:我们在做二级联动的时候往往会遇到这样的需求,后台管理端页面加载完成后显示用户的省份,城市,并且可以对用户的省份,城市信息可以修改 如果只是简单的显示 你完全可以直接放 ...

  7. 形象化理解nice值越高优先级越低

    当我们说起某个人很nice的时候,通常指的是那个人心地善良,很好说话,很容易相处.(相反,aggressive的人很可能是不nice的,因为老想抢夺别人的东西,尤其是在资源有限的情况下,恨不得一个蛋糕 ...

  8. 两句话帮你彻底记住gdb之eXamining memory

    对于刚学习Unix/Linux环境C编程的小朋友们或者写了很多所谓的C代码的老手们(其实很可能是机械程序员或者是伪程序员)来说,要记住gdb的eXaming memory的语法其实是相当不容易的,如果 ...

  9. NYOJ-括号配对问题 <技巧性的非栈道法>

    括号配对问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3  描述 现在,有一行括号序列,请你检查这行括号是否配对. 输入 第一行输入一个数N(0<N<=100) ...

  10. nginx使用openssl的证书-泛解析

    一.需求分析 我们公司测试环境,域名更换,原来的*.dev.devbao.cn   变为   *.dev.vdai.cn  ,此处的*表示多个二级域名,导致原来为dev.devbao.cn制作的ssl ...