读取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 ...
随机推荐
- Java7新特性
① 新增了switch对字符串的支持,也就是说可以在switch之后直接使用字符串来进行判断,语法基本与Java7之前支持的语法一样. ② 对数值字面量的增强支持,首先是可以在源代码中直接使用二进制数 ...
- 给你的git仓库瘦身
很久没有写博客了,最近遇到了一个git问题,比较典型,记录下来与大家分享. 我们使用git版本控制的时候享受了很多便利,不管是代码合并,分支提供给我们的并发,但我们也往往忽略了每次提交之后在我们本地项 ...
- Python爬虫小白入门(五)PhatomJS+Selenium第二篇
一.前言 前文介绍了PhatomJS 和Selenium 的用法,工具准备完毕,我们来看看如何使用它们来改造我们之前写的小爬虫. 我们的目的是模拟页面下拉到底部,然后页面会刷出新的内容,每次会加载10 ...
- C语言之算数运算符
一 什么是算数运算符 算术运算符: +: 就是把两个数据相加,得到和 -: 就是把两个数据相减,得到差 *: 就是把两个数据相乘,得到积 /: 就是把两个数据相除,得到商 %: 就是把两个数 ...
- ruby web性能响应时间
可以统计单个web页面加载时间. require 'watir-webdriver' require 'watir-webdriver-performance' b = Watir::Browser. ...
- oracle if else 判断
CREATE OR REPLACE FUNCTION fn_GetClassifyBymxmjazfs (v_azfs varchar2,v_mx varchar2,v_mj varchar2) re ...
- ipad 横屏 竖屏 CSS
/* iPads (landscape) ----------- */ @media only screen and (min-device-width : 768px) and (max-devic ...
- Python3 操作Excel--openpyxl
操作Excel文件建议使用openpyxl 兼容office2016 打开excel文件,获取工作表 import openpyxl wb=openpyxl.load_workbook('ttt.xl ...
- dev gridcontrol把event事件转换成命令
可以通过继承gridcontrol的形式来实现 定义DataGridDoubleClickCommand依赖属性 class MyGridControl : GridControl { ...
- C#-实验3
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...