1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > java解压多目录Zip文件(解决中文乱码问题)--转载

java解压多目录Zip文件(解决中文乱码问题)--转载

时间:2018-11-08 18:38:28

相关推荐

java解压多目录Zip文件(解决中文乱码问题)--转载

原文地址:/blog/1749439

import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.util.Enumeration;import org.apache.tools.zip.ZipEntry;import org.apache.tools.zip.ZipFile;/*** 解压Zip文件工具类* @author zhangyongbo**/public class ZipUtil {private static final int buffer = 2048;public static void main(String[] args){unZip("E:\\java\\Android\\aaa.zip");}/*** 解压Zip文件* @param path 文件目录*/public static void unZip(String path){int count = -1;String savepath = "";File file = null;InputStream is = null;FileOutputStream fos = null;BufferedOutputStream bos = null;savepath = path.substring(0, path.lastIndexOf(".")) + File.separator; //保存解压文件目录new File(savepath).mkdir(); //创建保存目录ZipFile zipFile = null;try{zipFile = new ZipFile(path,"gbk"); //解决中文乱码问题Enumeration<?> entries = zipFile.getEntries();while(entries.hasMoreElements()){byte buf[] = new byte[buffer];ZipEntry entry = (ZipEntry)entries.nextElement();String filename = entry.getName();boolean ismkdir = false;if(filename.lastIndexOf("/") != -1){ //检查此文件是否带有文件夹ismkdir = true;}filename = savepath + filename;if(entry.isDirectory()){ //如果是文件夹先创建file = new File(filename);file.mkdirs();continue;}file = new File(filename);if(!file.exists()){ //如果是目录先创建if(ismkdir){new File(filename.substring(0, filename.lastIndexOf("/"))).mkdirs(); //目录先创建 }}file.createNewFile(); //创建文件is = zipFile.getInputStream(entry);fos = new FileOutputStream(file);bos = new BufferedOutputStream(fos, buffer);while((count = is.read(buf)) > -1){bos.write(buf, 0, count);}bos.flush();bos.close();fos.close();is.close();}zipFile.close();}catch(IOException ioe){ioe.printStackTrace();}finally{try{if(bos != null){bos.close();}if(fos != null) {fos.close();}if(is != null){is.close();}if(zipFile != null){zipFile.close();}}catch(Exception e) {e.printStackTrace();}}}}

指定目录重新的方法如下:

/*** 解压Zip文件* @param path 文件目录*/public static void unZipNew(String path,String savepath){int count = -1;File file = null;InputStream is = null;FileOutputStream fos = null;BufferedOutputStream bos = null;ZipFile zipFile = null;try{zipFile = new ZipFile(path,"gbk"); //解决中文乱码问题Enumeration<?> entries = zipFile.getEntries();while(entries.hasMoreElements()){byte buf[] = new byte[buffer];ZipEntry entry = (ZipEntry)entries.nextElement();String filename = entry.getName();boolean ismkdir = false;if(filename.lastIndexOf("/") != -1){ //检查此文件是否带有文件夹ismkdir = true;}filename = savepath + filename;if(entry.isDirectory()){ //如果是文件夹先创建file = new File(filename);file.mkdirs();continue;}file = new File(filename);if(!file.exists()){ //如果是目录先创建if(ismkdir){new File(filename.substring(0, filename.lastIndexOf("/"))).mkdirs(); //目录先创建 }}file.createNewFile(); //创建文件is = zipFile.getInputStream(entry);fos = new FileOutputStream(file);bos = new BufferedOutputStream(fos, buffer);while((count = is.read(buf)) > -1){bos.write(buf, 0, count);}bos.flush();bos.close();fos.close();is.close();}zipFile.close();}catch(IOException ioe){ioe.printStackTrace();}finally{try{if(bos != null){bos.close();}if(fos != null) {fos.close();}if(is != null){is.close();}if(zipFile != null){zipFile.close();}}catch(Exception e) {e.printStackTrace();}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。