JDK 自带压缩解压流
代码如下
package com.test.java.zip; import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream; /**
* @author jrwangxin1 字节数组压缩解压工具
*/
public class ZipUtil {
/** 压缩 */
public static byte[] zip(byte[] source) throws IOException {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ZipOutputStream zipOutputStream = new ZipOutputStream(byteArrayOutputStream);
zipOutputStream.putNextEntry(new ZipEntry("0"));
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(zipOutputStream);
bufferedOutputStream.write(source);
bufferedOutputStream.close();
return byteArrayOutputStream.toByteArray();
} /** 解压 */
public static byte[] unzip(byte[] source) throws IOException {
ZipInputStream zipInputStream = new ZipInputStream(new ByteArrayInputStream(source));
while (zipInputStream.getNextEntry() != null) {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); byte[] buffer = new byte[4096];
int i=0;
while ((i = zipInputStream.read(buffer)) != -1) {
byteArrayOutputStream.write(buffer,0,i);
}
return byteArrayOutputStream.toByteArray();
}
return null;
} public static void main(String[] args) throws IOException {
// 读文件
String file = "E:/pic.jpg";
String outFile = "E:/picunzip.jpg";
BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(file));
byte[] bytes1 = new byte[bufferedInputStream.available()];
bufferedInputStream.read(bytes1);
bufferedInputStream.close();
System.out.println("压缩前大小: " + bytes1.length);
// 压缩
byte[] bytes2 = ZipUtil.zip(bytes1);
System.out.println("压缩后大小: " + bytes2.length);
// 解压
byte[] bytes3 = ZipUtil.unzip(bytes2);
System.out.println("unzip解压后大小: " + bytes3.length); // 输出到文件以便验证
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(outFile));
bufferedOutputStream.write(bytes3);
bufferedOutputStream.close();
}
}
JDK 自带压缩解压流的更多相关文章
- Java之解压流(ZipInputStream)
一.ZipInputStream相对于ZipOutputStream而言,使用上面简单的多了,相对的,既然存在压缩流,就会存在,解压的方式. 二.解压文件,流的使用过程中也是很常用的,在读取文件,根据 ...
- Windows自带压缩解压工具
压缩一个文件: 命令行:makecab fileName.txt fileName.zip 鼠标操作:选中文件-->鼠标右键-->Send to-->Compressed (zipp ...
- 180918-JDK之Deflater压缩与Inflater解压
JDK 压缩与解压工具类 在实际的应用场景中,特别是对外传输数据时,将原始数据压缩之后丢出去,可以说是非常常见的一个case了,平常倒是没有直接使用JDK原生的压缩工具类,使用Protosutff和K ...
- 使用.Net自带的GZipStream进行流压缩与解压
using System.IO; using System.IO.Compression; using System.Text; namespace CS.Utility { /// <summ ...
- linux下安装配置jdk(解压版)
在linux下登录oracle官网,下载解压版jdk 传送门 系统默认下载到"下载"目录中 创建要将该文件解压的文件夹: 其中 -p 参数代表递归创建文件夹(可以创建多级目录 ...
- JDK解压版制作
今天上 甲骨文 的官网,想下载一个 解压版的 jdk 1.8 结果发现: 没有解压版,只有exe版本.于是就搜索制作方法. 具体就是,双击exe版本,在最后关头要安装的时候, 重点来了! 跟他皮一下 ...
- linux安装jdk及解压命令
注意事项:虚拟机安装的系统,不能从桌面直接拖拽传输文件,否则解压出错 查看系统自带安装的java rpm -qa | grep java 删除非.noarch文件 rpm -e --nodeps 文件 ...
- centos6.5安装jdk(解压tar.gz)
0.说明 下载jdk文件包jdk-7u79-linux-x64.tar.gz. 1.环境清理(系统自带的OpenJDK) 1.1 查看OpenJDK的安装包 $ rpm -qa |grep java ...
- tar命令解压jdk.tar.gz包 报错 gzip: stdin: not in gzip format
转自:https://blog.csdn.net/LL_zhuo/article/details/44173355 遇到和这篇博文一样的问题了.用wget 从oracle官网下载jdk, http:/ ...
随机推荐
- Vue.js 子组件的异步加载及其生命周期控制
前端开发社区的繁荣,造就了很多优秀的基于 MVVM 设计模式的框架,而组件化开发思想也越来越深入人心.这其中不得不提到 Vue.js 这个专注于 VM 层的框架. 本文主要对 Vue.js 组件化开发 ...
- 题解-PKUWC2018 随机算法
Problem loj2540 题意简述:给定\(n\)个点的无向图,给定求最大独立集的近似算法:随机排列\(1\cdots n\),按照该排列顺序贪心构造最大独立集(即对每个点能加入独立集就加),求 ...
- hibernate框架学习之数据抓取(加载)策略
Hibernate获取数据方式 lHibernate提供了多种方式获取数据 •load方法获取数据 •get方法获取数据 •Query/ Criteria对象获取数据 lHibernate获取的数据分 ...
- 011_docker内部各系统基本工具安装
root@nginx-56b8c64cb4-t97vb:/# cat /etc/os-release #查看linux发行版本 PRETTY_NAME="Debian GNU/Linux 8 ...
- 【原创】大数据基础之Flume(2)应用之kafka-kudu
应用一:kafka数据同步到kudu 1 准备kafka topic # bin/kafka-topics.sh --zookeeper $zk:2181/kafka -create --topic ...
- bootstrap排列顺序
写在 typora 的笔记 复制过来排版很丑,所以截图算了..
- java多线程--AtomicReference
AtomicReference介绍 AtomicReference是作用是对"对象"进行原子操作. AtomicReference源码分析(基于JDK1.7.0_40) 在JDK1 ...
- windows连接服务端的域名正常,linux却不通,(针对于负载均衡后端节点设置)
1.初步判断不是网络上的,因为windows主机访问正常, 2.修改客户端linux主机 net.ipv4.tcp_tw_recycle=0,测试是否正常,(服务器当连接数达到一定量之后,会执行rec ...
- Linux平台 Oracle 18c RAC安装
Linux平台 Oracle 18c RAC安装Part1:准备工作 2018-08-04 22:20 by AlfredZhao, 1065 阅读, 0 评论, 收藏, 编辑 一.实施前期准备工作 ...
- 相关子查询和嵌套子查询 [SQL Server]
SQLServer子查询可以分为 相关子查询 和 嵌套子查询 两类.前提,假设Books表如下: 类编号 图书名 出版社 价格-------------- ...