使用java中的java.util.zip包把文件或文件夹压缩成zip文件
核心类ZipOutputStream的api文档请参考:
https://nowjava.com/docs/java-api-11/java.base/java/util/zip/ZipOutputStream.html
java代码
import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class ZipTest {
public static void main(String[] args) throws Exception{
// 本地文件夹位置
File folder = new File("D://data//ziptest//log");
// 生成压缩文件的位置
String outputFileName = "D://data//ziptest//test.zip";
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(
new FileOutputStream(new File(outputFileName))
);
ZipOutputStream zipOutputStream = new ZipOutputStream(bufferedOutputStream);
bfsZip(folder,zipOutputStream,"");
zipOutputStream.finish();
zipOutputStream.close();
System.out.println("压缩成功");
}
private static void bfsZip(File file,ZipOutputStream zipOutputStream,String base) throws IOException {
// 是文件夹
if(file.isDirectory()){
// 压缩文件夹
base = base+file.getName()+"/";
zipOutputStream.putNextEntry(new ZipEntry(base));
File[] files = file.listFiles();
if(files!=null && files.length>0){
for (File file1 : files) {
// 递归压缩
bfsZip(file1,zipOutputStream,base);
}
}
zipOutputStream.closeEntry();
}else{
// 是文件
System.out.println(base+file.getName());
zipOutputStream.putNextEntry(new ZipEntry(base+file.getName()));
FileInputStream fileInputStream = new FileInputStream(file);
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
byte[] b = new byte[1024];
int length = 0;
while ((length = bufferedInputStream.read(b))!=-1){
zipOutputStream.write(b,0,length);
}
bufferedInputStream.close();
fileInputStream.close();
zipOutputStream.closeEntry();
}
}
}
评论区
请写下您的评论...
猜你喜欢
java基础
1221
核心类ZipInputStream的api文档请参考:https://nowjava.com/docs/java-api-11/java.base/java/util/zip
算法基础
1938
前端项目正式发布时一般需要混淆压缩js、css文件等,一方面压缩能够使文件体积更小,更多的节约网络io资源,另一方面能避免被人读懂你的代码!!!!!!工具可以使用uglifyjs2。安装通过npm安
java基础
1872
java压缩文件参考:http://www.jiajiajia.club/blog/artical/1en1qpemej45/499一
算法基础
1281
安装node第一步依然是安装node,下载node.js安装文件,并安装:https://nodejs.org/en/全局安装clean-cssnpminstall-gclean-css局部安装
blog
window系统中创建'.'开头的文件夹
其他
2954
直接在资源管理器中创建的时候会提示:‘必须键入文件名’解决办法:在cmd命令行中,cd某文件夹,执行md.abc即可创建一个名为.abc的文件夹
blog
使用rclone管理minio文件
minio
1952
rclone下载地址:https://rclone.org/downloads/
解压文件包:
unziprclone-v1.59.0-linux-amd64.zip
cdcdrclone
blog
java使用dom4j解析xml文件
工具
3213
要解析的xml文件如下:soap:Envelopexmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"xmlns:xsd="http://www.
blog
java使用minio上传文件
minio
2599
创建buckets
创建serviceaccounts
java上传文件
maven依赖:
dependency
groupIdio.minio/groupId
最新发表
归档
2018-11
12
2018-12
33
2019-01
28
2019-02
28
2019-03
32
2019-04
27
2019-05
33
2019-06
6
2019-07
12
2019-08
12
2019-09
21
2019-10
8
2019-11
15
2019-12
25
2020-01
9
2020-02
5
2020-03
16
2020-04
4
2020-06
1
2020-07
7
2020-08
13
2020-09
9
2020-10
5
2020-12
3
2021-01
1
2021-02
5
2021-03
7
2021-04
4
2021-05
4
2021-06
1
2021-07
7
2021-08
2
2021-09
8
2021-10
9
2021-11
16
2021-12
14
2022-01
7
2022-05
1
2022-08
3
2022-09
2
2022-10
2
2022-12
5
2023-01
3
2023-02
1
2023-03
4
2023-04
2
2023-06
3
2023-07
4
2023-08
1
2023-10
1
2024-02
1
2024-03
1
2024-04
1
2024-08
1
标签
算法基础
linux
前端
c++
数据结构
框架
数据库
计算机基础
储备知识
java基础
ASM
其他
深入理解java虚拟机
nginx
git
消息中间件
搜索
maven
redis
docker
dubbo
vue
导入导出
软件使用
idea插件
协议
无聊的知识
jenkins
springboot
mqtt协议
keepalived
minio
mysql
ensp
网络基础
xxl-job
rabbitmq
haproxy
srs
音视频
webrtc
javascript
加密算法
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。