博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ZipUtils工具类
阅读量:4182 次
发布时间:2019-05-26

本文共 5673 字,大约阅读时间需要 18 分钟。

package com.xiaobu.base.util;import lombok.extern.slf4j.Slf4j;import java.io.*;import java.nio.file.Files;import java.nio.file.Paths;import java.util.List;import java.util.Objects;import java.util.zip.ZipEntry;import java.util.zip.ZipInputStream;import java.util.zip.ZipOutputStream;/** * @author xiaobu * @version JDK1.8.0_171 * @date on  2019/7/25 10:54 * @description zip压缩解压工具类 */@Slf4jpublic class ZipUtil {
private static final int BUFFER_SIZE = 4096; /** * 功能描述:压缩单个文件 * * @param filePath, outPut * @return void * @author xiaobu * @date 2019/7/25 10:55 * @version 1.0 file.getName().split("\\.")[0].concat(".zip") windows情况 */ public static void compressSingleFile(String filePath, String outPut) {
try {
File file = new File(filePath); String zipFileName = file.getName().split("\\.")[0].concat(".zip"); System.out.println("zipFileName:" + zipFileName); System.out.println("1234 = " + outPut + File.separator + zipFileName); FileOutputStream fos = new FileOutputStream(outPut + File.separator + zipFileName); ZipOutputStream zos = new ZipOutputStream(fos); zos.putNextEntry(new ZipEntry(file.getName())); byte[] bytes = Files.readAllBytes(Paths.get(filePath)); zos.write(bytes, 0, bytes.length); zos.closeEntry(); zos.close(); } catch (FileNotFoundException ex) {
System.err.format("The file %s does not exist", filePath); } catch (IOException ex) {
System.err.println("I/O error: " + ex); } } /** * 功能描述:压缩多个文件 * * @param files, outputStream] * @return void * @author xiaobu * @date 2019/11/27 15:34 * @version 1.0 */ public static void compressZip(List
files, OutputStream outputStream) {
ZipOutputStream zipOutStream = null; try {
//-- 包装成ZIP格式输出流 zipOutStream = new ZipOutputStream(new BufferedOutputStream(outputStream)); // -- 设置压缩方法 zipOutStream.setMethod(ZipOutputStream.DEFLATED); //-- 将多文件循环写入压缩包 for (int i = 0; i < files.size(); i++) {
File file = files.get(i); FileInputStream filenputStream = new FileInputStream(file); byte[] data = new byte[(int) file.length()]; filenputStream.read(data); //-- 添加ZipEntry,并ZipEntry中写入文件流,这里,加上i是防止要下载的文件有重名的导致下载失败 zipOutStream.putNextEntry(new ZipEntry(file.getName())); zipOutStream.write(data); filenputStream.close(); zipOutStream.closeEntry(); } } catch (IOException e) {
e.printStackTrace(); } finally {
try {
if (Objects.nonNull(zipOutStream)) {
zipOutStream.flush(); zipOutStream.close(); } if (Objects.nonNull(outputStream)) {
outputStream.close(); } } catch (IOException e) {
e.printStackTrace(); } } } /** * 功能描述:解压 * * @param zipFilePath, destDirectory] * @return void * @author xiaobu * @date 2019/11/27 15:26 * @version 1.0 */ public static void unzip(String zipFilePath, String destDirectory) throws IOException {
File destDir = new File(destDirectory); if (!destDir.exists()) {
destDir.mkdir(); } ZipInputStream zipIn = new ZipInputStream(new FileInputStream(zipFilePath)); ZipEntry entry = zipIn.getNextEntry(); // iterates over entries in the zip file while (entry != null) {
String filePath = destDirectory + File.separator + entry.getName(); if (!entry.isDirectory()) {
// if the entry is a file, extracts it extractFile(zipIn, filePath); } else {
// if the entry is a directory, make the directory File dir = new File(filePath); dir.mkdir(); } zipIn.closeEntry(); entry = zipIn.getNextEntry(); } zipIn.close(); } public static void extractFile(ZipInputStream zipIn, String filePath) throws IOException {
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath)); byte[] bytesIn = new byte[BUFFER_SIZE]; int read = 0; while ((read = zipIn.read(bytesIn)) != -1) {
bos.write(bytesIn, 0, read); } bos.close(); } public static void main(String[] args) {
/* String filePath = "D:\\thw\\8888老地方大饼专卖店2019-07-24现场工作.xlsx"; String outPut = "D:\\thw"; compressSingleFile(filePath,outPut);*/ /* File file1 = new File("D:\\thw\\1.ftl"); File file2 = new File("D:\\thw\\2.ftl"); List
files = new ArrayList<>(); files.add(file1); files.add(file2); try { FileOutputStream fileOutputStream = new FileOutputStream("D:\\thw\\1.zip"); compressZip(files, fileOutputStream); } catch (FileNotFoundException e) { e.printStackTrace(); }*/ long beginTime = System.currentTimeMillis(); String zipPath = "D:\\thw\\test.zip"; String destPath = "D:\\thw\\test"; try {
unzip(zipPath, destPath); } catch (IOException e) {
e.printStackTrace(); } System.out.println(System.currentTimeMillis() - beginTime); }}

转载地址:http://jwgai.baihongyu.com/

你可能感兴趣的文章
我差点信了......
查看>>
输入百度网址后,我发现了一个秘密...
查看>>
卧槽,被盗号了!!!
查看>>
TCP ,丫的终于来了!!
查看>>
你删除过的所有小黄片,它都能轻易找到
查看>>
小米低调上线的良心APP,永久免费真心好用!
查看>>
最新款笔记本真香,包邮送一台!
查看>>
微信小程序商城项目(Java版),拿去毕设又节省2千块
查看>>
学计算机的女生都怎么样了?
查看>>
我去蔚来试车了。。。
查看>>
福利,PyTorch中文版官方教程来啦(附下载)
查看>>
硬核分享!靠这个技术过了阿里二面
查看>>
一把小刀,直插 class 文件的小心脏
查看>>
进大厂,稳了!
查看>>
暴跌30%,心态崩了
查看>>
卧槽,我的小破站爆了!
查看>>
理工人的留学之路怎么就这么难,科研项目一个接着一个,到底什么时候是个头啊...
查看>>
百年名校史上第一桩:博士论文抄袭,剥夺学位,涉事中国学者已在国内教书7年...
查看>>
人机对战?学会Python简直开挂!
查看>>
国内高校计算机教育存在哪些问题?
查看>>