因为最近项目需要批量上传文件,而这里的批量就是将文件压缩在了一个zip包里,然后读取文件进行解析文件里的内容。

因此需要先对上传的zip包进行解压。以下直接提供代码供参考:

1.第一个方法是用于解压zip压缩包的方法。

2.第二个方法是 删除该文件夹以及子目录和子目录文件的方法。

3.第三个方法是 删除 删除文件夹内所有文件和子目录 的方法。

因为我们一般处理解析完数据之后需要删除上传的文件,以减小服务器的压力,所以提供第二、三方法以供参考。

我这里的解压zip包的方法返回的是解压后所得到的文件List,大家也可以根据需要返回自己需要的结果,或者不返回都行。

如果大家有什么更好的方法欢迎留言,请各位多多指教!

 package com.forms.oa.weekreport.batchimport.service;

 import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List; import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile; public class FileUtil { /**
* 解压zip压缩包并返回解压之后所得到的文件List
* <br>
* @param zipPath
* @return
* List<File>
*/
public static List<File> UnZipFile(String zipPath) {
File file = new File(zipPath);
//设置 压缩包所在的目录下与压缩包同名文件夹 为 解压后的文件所在的目录
String unZipPath=zipPath.substring(0, zipPath.lastIndexOf("."));
ZipFile zipFile = null;
List<File> fileList=new ArrayList<File>();
try {
//设置编码格式
zipFile = new ZipFile(file,"GBK");
} catch (IOException e1) {
e1.printStackTrace();
}
Enumeration e = zipFile.getEntries();
while(e.hasMoreElements()) {
ZipEntry zipEntry = (ZipEntry)e.nextElement();
if(zipEntry.isDirectory()) {
String name = zipEntry.getName();
name = name.substring(0,name.length()-1);
File f = new File(unZipPath+File.separator + name);
f.mkdirs();
} else {
File f = new File(unZipPath +File.separator+ zipEntry.getName());
fileList.add(f);
f.getParentFile().mkdirs();
try {
f.createNewFile();
InputStream is = zipFile.getInputStream(zipEntry);
FileOutputStream fos = new FileOutputStream(f);
int length = 0;
byte[] b = new byte[1024];
while((length=is.read(b, 0, 1024))!=-1) {
fos.write(b, 0, length);
}
is.close();
fos.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
if (zipFile != null) {
try {
zipFile.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
file.delete();//解压完以后将压缩包删除
return fileList; //返回解压后所得到的文件list
} /**
* 删除该文件夹以及子目录和子目录文件 <br>
* @param folderPath void
*/
public static void delFolder(String folderPath) {
try {
delAllFile(folderPath); //删除完里面所有内容
File path = new File(folderPath);
path.delete(); //删除空文件夹
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 删除文件夹内所有文件和子目录 <br>
* @param path
* @return boolean
*/
public static boolean delAllFile(String path) {
boolean flag = false;
File file = new File(path);
if (!file.exists()) {
return flag;
}
if (!file.isDirectory()) {
return flag;
}
String[] tempList = file.list();
File temp = null;
for (int i = 0; i < tempList.length; i++) {
if (path.endsWith(File.separator)) {
temp = new File(path + tempList[i]);
} else {
temp = new File(path + File.separator + tempList[i]);
}
if (temp.isFile()) {
temp.delete();
}
if (temp.isDirectory()) {
delAllFile(path + File.separator + tempList[i]);//先删除文件夹里面的文件
delFolder(path + File.separator + tempList[i]);//再删除空文件夹
flag = true;
}
}
return flag;
} }

Java 解压zip压缩包的更多相关文章

  1. java解压zip压缩包

    package com.spring.mvc.zip; import java.io.File;import java.io.FileOutputStream;import java.io.Input ...

  2. python 解压zip压缩包

    在当前路径解压zip压缩包,生成同名文件夹,内部目录结构与压缩包一致 import zipfile import os def un_zip(file_name): """ ...

  3. java无需解压zip压缩包直接读取包内的文件名(含中文)

    java自带了java.util.zip工具可以实现在不解压zip压缩包的情况下读取包内文件的文件名:(注:只能是ZIP格式的,rar我试了不行)代码如下: public static String ...

  4. java 解压 zip 包并删除

    需求是这样的,  在服务器上有 运营上传的zip 包,内容是用户的照片,我需要做的是 获取这些照片上传,并保存到 数据库. 这里面的 上传照片,保存数据库都不难,主要问题是解压zip包,和删除zip ...

  5. Java动态解压zip压缩包

    import java.io.BufferedOutputStream; import java.io.File; import java.io.FileNotFoundException; impo ...

  6. JAVA解压ZIP文件

    import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.Inp ...

  7. Java—解压zip文件

    import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import ja ...

  8. Java 解压 zip 文件

    代码如下 package test_java; import java.io.File; import java.io.FileOutputStream; import java.io.IOExcep ...

  9. java 解压zip java.lang.IllegalArgumentException: MALFORMED 错误

    ava.lang.IllegalArgumentException: MALFORMED at java.util.zip.ZipCoder.toString(Unknown Source) at j ...

随机推荐

  1. Jfinal-Plugin源码解读

    PS:cnxieyang@163.com/xieyang@e6yun.com 本文就Jfinal-plugin的源码进行分析和解读 Plugin继承及实现关系类图如下,常用的是Iplugin的三个集成 ...

  2. CCNA笔记(2)

    CCNA第一天笔记:何为因特网?答:因特网,是连接各台pc与终端设备,正是因为有了因特网,我们才能与全世界交流,玩在线游戏,在线学习.因特网给我们教育带来什么方便?答:没有了地域的阻止,可以在线学习, ...

  3. NYOJ201作业题

    作业题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 小白同学这学期有一门课程叫做<数值计算方法>,这是一门有效使用数字计算机求数学问题近似解的方法与过程, ...

  4. LCS最长公共子序列~dp学习~4

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1513 Palindrome Time Limit: 4000/2000 MS (Java/Others ...

  5. 打开redis和solr

  6. 小工具:截图&简单图像处理

    一.程序运行截图 二.获取屏幕截图的方法 首先知道我们可以通过Screen.PrimaryScreen.Bounds获取到当前整个屏幕,再利用Bitmap和Graphics就可以得到整个屏幕的图片了. ...

  7. 97、爬虫框架scrapy

    本篇导航: 介绍与安装 命令行工具 项目结构以及爬虫应用简介 Spiders 其它介绍 爬取亚马逊商品信息   一.介绍与安装 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, ...

  8. 织梦DedeCMS v5.7 实现导航条下拉菜单

    首先将下面这段代码贴到templets\default\footer.htm文件里(只要在此文件里就行,位置无所谓) <</span>script type='text/javasc ...

  9. webzip怎么用 如何用webzip下载整个网站?

    相信很多站长对webzip这款软件都并不感到陌生,它功能强大,能够完整下载网站的内容,或者你也可以选择自行设置下载的层数.文件类型.网页与媒体文件的定位等等.具体详情你可以在百度上去搜一下.由于web ...

  10. 【开发技术】Java生成验证码

    Java生成验证码 为了防止用户恶意,或者使用软件外挂提交一些内容,就得用验证码来阻止,虽然这个会影响用户体验,但为了避免一些问题很多网站都使用了验证码;今天下午参考文档弄了一个验证码,这里分享一下; ...