java文件压缩ZipOutPutStream
其实最好的书籍就是javaAPI
1.创建ZipOutPutStream流,利用BufferedOutputStream提个速.
2.新建zip方法,用来压缩文件,传参
3.zip方法利用putNextEntry来将目录点写入
4.递归目录数组
5.写入数据,关闭流
/**
* 压缩
* @author BinPeng
* @date 2019/8/6 18:19
*/
public class Zip18 {
public static void main(String[] args) throws IOException {
compreSsion("F:\\test.zip",new File("F:\\test"));//第一个参数是压缩的名字,第二个参数是要压缩的目录
}
private static void compreSsion(String zipFileName, File target) throws IOException {//压缩
System.out.println("压缩文件...");
ZipOutputStream out=new ZipOutputStream(new FileOutputStream(zipFileName));
BufferedOutputStream bos=new BufferedOutputStream(out);
zip(out,target,target.getName(),bos);
bos.close();
out.close();
System.out.println("压缩完成");
} private static void zip(ZipOutputStream zout, File target, String name, BufferedOutputStream bos) throws IOException {
//判断是不是目录
if (target.isDirectory()){
File[] files=target.listFiles();
if (files.length==0){//空目录
zout.putNextEntry(new ZipEntry(name+"/"));
/* 开始编写新的ZIP文件条目,并将流定位到条目数据的开头。
关闭当前条目,如果仍然有效。 如果没有为条目指定压缩方法,
将使用默认压缩方法,如果条目没有设置修改时间,将使用当前时间。*/
}
for (File f:files){
//递归处理
zip(zout,f,name+"/"+f.getName(),bos);
}
}else {
zout.putNextEntry(new ZipEntry(name));
InputStream inputStream=new FileInputStream(target);
BufferedInputStream bis=new BufferedInputStream(inputStream);
byte[] bytes=new byte[1024];
int len=-1;
while ((len=bis.read(bytes))!=-1){
bos.write(bytes,0,len);
}
bis.close(); } } }
java文件压缩ZipOutPutStream的更多相关文章
- java文件压缩和解压
功能实现. package com.test; import java.io.File; import java.io.BufferedOutputStream; import java.io.Buf ...
- 文件压缩 ZipOutputStream类
先举一个压缩单个文件的例子吧: [例子1] import java.io.File; import java.io.FileInputStream; import java.io.FileOutput ...
- java文件压缩与解压
感谢“zlex.dongliang@gmail.com”.主要代码如下: import java.io.BufferedInputStream; import java.io.File; import ...
- java 文件压缩和解压(ZipInputStream, ZipOutputStream)
最近在看java se 的IO 部分 , 看到 java 的文件的压缩和解压比较有意思,主要用到了两个IO流-ZipInputStream, ZipOutputStream,不仅可以对文件进行压缩,还 ...
- Java文件压缩优化工具(ProGuard) 软件介绍 Soft content
ProGuard是一款免费的Java类文件的压缩.优化.混肴器.它可以帮你删除没用的类,字段,方法与属性,使字节码最大程度地优化,使用简短且无意义的名字来重命名类.字段和方法 .目前eclipse已经 ...
- Java文件压缩分割(待)
http://blog.csdn.net/ycg01/article/details/1366648
- Java实现文件压缩与解压
Java实现ZIP的解压与压缩功能基本都是使用了Java的多肽和递归技术,可以对单个文件和任意级联文件夹进行压缩和解压,对于一些初学者来说是个很不错的实例.(转载自http://www.puiedu. ...
- Java实现文件压缩与解压[zip格式,gzip格式]
Java实现ZIP的解压与压缩功能基本都是使用了Java的多肽和递归技术,可以对单个文件和任意级联文件夹进行压缩和解压,对于一些初学者来说是个很不错的实例. zip扮演着归档和压缩两个角色:gzip并 ...
- java文件处理之压缩,分割
http://blog.csdn.net/ycg01/article/details/1366648 java文件处理之压缩,分割 标签: javaexceptionimportnullbytefil ...
随机推荐
- SYN洪泛(dos)攻击和DDOS攻击
在TCP三次握手中,服务器为了响应一个收到的SYN,分配并初始化连接变量和缓存,然后服务器发送一个SYNACK进行响应,并等待来自客户的ACK报文段,如果客户不发送ACK来完成该三次握手,最终,服务器 ...
- dubbo的重试原则
验证思路.使用超时来验证重试次数 XML 注解
- HTML5中的data-*属性
data-* 属性包括两部分: 属性名不应该包含任何大写字母,并且在前缀 "data-" 之后必须有至少一个字符: 属性值可以是任意字符串: 注释:用户代理会完全忽略前缀为 &qu ...
- Docker容器化【Docker镜像与容器相关命令】
# Docker 学习目标: 掌握Docker基础知识,能够理解Docker镜像与容器的概念 完成Docker安装与启动 掌握Docker镜像与容器相关命令 掌握Tomcat Nginx 等软件的常用 ...
- 14 微服务电商【黑马乐优商城】:day04-ES6语法入门
day01-springboot(理论篇) :day01-springboot(实践篇) day02-springcloud(理论篇一) :day02-springcloud(理论篇二) :day ...
- CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://repo.anaconda.com/pkgs/main/win-64/repodata.json.bz2> Elapsed: -
将C:\Users\<本机用户名>\.condarc文件修改为 channels: - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/ ...
- [LC] 809. Expressive Words
Example: Input: S = "heeellooo" words = ["hello", "hi", "helo&quo ...
- 42)PHP,mysqli函数功能总结
fetch----------------一个一个的取值,这个注意 fetch_array(),fetch_assoc(),fetch_object(),这三个方法的使用请看手册 请注意是FETCH, ...
- vue2.0学习之组件间通信
/* child.vue*/ 子组件 <template> <div> /*必须要用div包裹起来,然后在里面写需要的组件内容,这里面和平常写的html是一样的*/ <d ...
- VBA/VB6/VBS/VB.NET/C#/Python/PowerShell都能调用的API封装库
API函数很强大,但是声明的时候比较繁琐. 我开发的封装库,包括窗口.键盘.鼠标.消息等常用功能.用户不需要添加API函数的声明,就可以用到API的功能. 在VBA.VB6的引用对话框中引用API.t ...