Java ZIp 压缩和解压
来源:互联网 发布:东航巴黎昆明 知乎. 编辑:程序博客网 时间:2024/05/02 04:34
<span style="font-size:24px;">Java ZIP的压缩工具:</span>
package stu.love.zip;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.util.zip.ZipEntry;ytil.zip.ZipOutputStream;/** * 程序实现了ZIP压缩。共分为2部分 : 压缩(compression)与解压(compression) * 大致功能包括用了多态,递归等JAVA核心技术,可以对单个文件和任意级联文件夹进行压缩和解压。 需在代码中自定义源输入路径和目标输出路径。 * 在本段代码中,实现的是压缩部分;解压部分见本包中UnZipFiels部分。 * * @author hello * */public class ZipCompressing {private static int k = 1;//定义 递归次数的标记!public ZipCompressing() {// TODO Auto-generated constructor stub}public static void main(String[] args) throws IOException {zipCompress("D:\\loveyouvewry.zip",new File("C:\\lvoe\\temp\\a.log"));}/** * * 压缩文件或者文件夹 * * @param zipFilename 指定压缩文件的路径 * @param in需要压缩的文件 * @throws IOException */private static void zipCompress(String zipFilepath,File in) throws IOException{System.out.println("开始压缩");ZipOutputStream out = null;BufferedOutputStream buf = null;try {out = new ZipOutputStream(new FileOutputStream(zipFilepath));buf = new BufferedOutputStream(out);//调用压缩方法 使用了递归调用zip(out, in, in.getName(), buf);} catch (FileNotFoundException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}finally{try {out.close();buf.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}System.out.println("压缩结束");}/** * * //递归压缩的方法 * * @param out zip压缩输出流 * @param f需要压缩的文件 * @param base压缩文件的名字,作为 条目的 名字! * @param bo缓冲输出流! 写入文件! * @throws IOException */private static void zip(ZipOutputStream out,File f,String base,BufferedOutputStream bo) throws IOException{if(f.isDirectory()){//1 是文件夹 需要判断 是否有文件?File[] files = f.listFiles();if(files.length == 0){out.putNextEntry(new ZipEntry(base+"/"));System.out.println("base="+base);}for(int i=0;i<files.length;i++){//递归调用!zip(out, f, base, bo);}System.out.println("第" + k + "次递归");k++;}else{//2 是文件的话直接 读取文件 写入数据!out.putNextEntry(new ZipEntry(base));System.out.println("base="+base);FileInputStream in= new FileInputStream(f);byte[] arr = new byte[1024];int len = 0;while((len= in.read(arr))!= -1){//写入zip文件中!bo.write(arr);bo.flush();}in.close();out.close();bo.close();}}}
二 解压缩:
package stu.love.zip;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.Enumeration;import java.util.zip.ZipEntry;import java.util.zip.ZipFile;public class unZipFiles {public unZipFiles() {// TODO Auto-generated constructor stub}public static void main(String[] args) throws IOException {File zipFile = new File("D:\\android2\\Wireshark.zip");String descDir = "D:\\Use\\"; unZipFiles.unZipFiles(zipFile, descDir);}/** * 解压到指定目录 * @param zipPath * @param descDir * @author isea533 */public static void unZipFiles(String zipPath,String descDir)throws IOException{unZipFiles(new File(zipPath), descDir);}/** * 解压文件到指定目录 * @param zipFile * @param descDir * @author isea533 */@SuppressWarnings("rawtypes")public static void unZipFiles(File zipFile,String descDir)throws IOException{File pathFile = new File(descDir);if(!pathFile.exists()){pathFile.mkdirs();}ZipFile zip = new ZipFile(zipFile);for(Enumeration entries = zip.entries();entries.hasMoreElements();){ZipEntry entry = (ZipEntry)entries.nextElement();String zipEntryName = entry.getName();InputStream in = zip.getInputStream(entry);String outPath = (descDir+zipEntryName).replaceAll("\\*", "/");;//判断路径是否存在,不存在则创建文件路径File file = new File(outPath.substring(0, outPath.lastIndexOf('/')));if(!file.exists()){file.mkdirs();}//判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压if(new File(outPath).isDirectory()){continue;}//输出文件路径信息System.out.println(outPath);OutputStream out = new FileOutputStream(outPath);byte[] buf1 = new byte[1024];int len;while((len=in.read(buf1))>0){out.write(buf1,0,len);}in.close();out.close();}System.out.println("******************解压完毕********************");}}
0 0
- java压缩和解压zip
- Java ZIp 压缩和解压
- java zip压缩和解压
- JAVA压缩/解压ZIP
- Java压缩/解压ZIP
- java zip压缩解压
- java,zip压缩,解压。
- Java Zip 压缩、解压
- Java 解压和压缩密码zip文件
- java实用ZIP压缩和解压类
- java 压缩和解压zip包
- java 操作zip 压缩和解压
- java实现zip的压缩和解压
- java解压和压缩zip文件
- java对zip进行压缩和解压
- ZIP压缩和解压
- ZIP压缩和解压
- zip压缩和解压
- MySql数据库的基本操作-表数据中的 唯一约束 & 默认约束
- Leetcode: Balanced Binary Tree
- 配置了两台redis主从failover
- Qt的4个图像类QImage/QPixmap/QBitmap/QPicture 转
- MyBatis官方小例代码剖析
- Java ZIp 压缩和解压
- hdu 1258 Sum It Up (dfs)
- 然而,家乡生活的舒适和安逸,对我的惰性来说,是一大引诱
- QT 操作记录,待实践
- linux中Dcumentation目录下的basic_profiling.txt文档翻译
- 开发小技巧:创建自定义的HTML5输入框验证出错信息
- 《编程之美》学习笔记——指挥CPU占用率
- 2014上海网络赛1004||hdu5045 二分图的最佳匹配 或 状态压缩dp
- haproxy + redis 负载均衡