一下代码可以实现解压带有文件的压缩包,但如果压缩包里面含有文件夹,就无法正常解压了。大家一起来说说怎么样才能把一个具有压缩包的文件全部解压出来呢?
- package com.test;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.util.zip.ZipEntry;
- import java.util.zip.ZipException;
- import java.util.zip.ZipFile;
- import java.util.zip.ZipInputStream;
- /**
- * 解压缩文件
- * @author Administrator
- *
- */
- public class ZipInputStreamTest {
- public static void main(String[] args) throws Exception {
- // TODO 自动生成的方法存根
- File file=new File("d:"+File.separator+"test.zip"); //定义要解压的文件
-
- File output=null;
-
- ZipFile zipFile=new ZipFile(file); //得到解压文件
- //定义解压缩输入流
- ZipInputStream zipInput=new ZipInputStream(new FileInputStream(file));
- InputStream input=null;
- OutputStream out=null;
- ZipEntry entry=null; //定义实体类
- while((entry=zipInput.getNextEntry())!=null){
-
-
- output=new File("d:"+File.separator+entry.getName());
- //判断输出文件夹是否存在,如果不存在,则创建文件夹
-
-
- if(!(output.getParentFile().exists())){
- output.getParentFile().mkdir();
- }
- //判断输出文件是否存在,如果不存在,则创建该文件
- if(!(output.exists())){
- output.createNewFile();
- }
- input=zipFile.getInputStream(entry);
- out=new FileOutputStream(output);
- int b=0;
- while((b=input.read())!=-1){
- out.write(b);
- }
- input.close();
- out.close();
- }
-
-
- }
- }
复制代码 |
|