博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 分卷 zip
阅读量:6231 次
发布时间:2019-06-21

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

最近想写个东西,要使用分卷压缩,但是不想使用别的开源包,自己写了一个类来实现,其实使用

public void zip(String path) throws IOException {

File file = new File(path);

BufferedInputStream origin = null;

byte data[] = new byte[BUFFER];
FileInputStream fi = new FileInputStream(file);
origin = new BufferedInputStream(fi, BUFFER);
int count;
int offset = 0;
ZipOutputStream out = null;
while (true) {
if ((count = origin.read(data, 0, BUFFER)) != -1) {
if (offset % (MEGA) == 0) {
FileOutputStream dest = new FileOutputStream(file.getName()
+ ".(part" + (offset / (MEGA) + 1) + ").zip");
out = new ZipOutputStream(new BufferedOutputStream(dest));
ZipEntry entry = new ZipEntry(file.getName());
out.putNextEntry(entry);
}
out.write(data, 0, count);
offset += 1024;
if (offset % (MEGA) == 0 && offset != 0) {
out.close();
}
} else {
out.close();
break;
}
}
origin.close();
}

public void unzip(String[] path) throws IOException {

File file = new File(path[0].split("\\.")[0] + "."
+ path[0].split("\\.")[1]);

BufferedOutputStream out = new BufferedOutputStream(

new FileOutputStream(file));
byte data[] = new byte[BUFFER];
int offset = 0;
for (int i = 0; i < path.length; i++) {
ZipInputStream unzipfile = new ZipInputStream(new FileInputStream(
path[0]));
BufferedInputStream in = new BufferedInputStream(unzipfile);
ZipEntry entry = unzipfile.getNextEntry();
int count = 0;
while ((count = in.read(data, 0, BUFFER)) != -1) {
out.write(data, 0, count);
}
in.close();
}
out.close();
}

这里不要忘记了,压缩和解压都要使用entry来获得该文件的入口ZipEntry提供了一个功能很广泛的接口,允许我们获取设置zip文件内该特定项上的可利用的数据:名字压缩和未压缩的文件大小,日期校验和等

转载于:https://www.cnblogs.com/alabasta/archive/2012/04/05/2362394.html

你可能感兴趣的文章
以太网类型汇总
查看>>
什么是Floating (浮动)规则?
查看>>
交换机端口设置为镜像导致网络不通
查看>>
Linux高负载下优化MYSQL
查看>>
Binder服务-底层驱动
查看>>
国内外一些ip反查域名的网站
查看>>
迪普防毒墙产品线
查看>>
sublime Text技巧
查看>>
mysql配置参数详解
查看>>
百万级SQL查询优化
查看>>
linux SWAP 分区建立及释放内存
查看>>
Rocks 头结点更改public IP 上网IP地址
查看>>
phpcmsv9 调用多个栏目下文章的两个办法
查看>>
LINUX帐号管理命令简介
查看>>
oracledatabase12g.com目前使用的wordpress插件
查看>>
Python random模块
查看>>
nagios 详细部署操作(二)
查看>>
流程式编程
查看>>
小蚂蚁学习APP接口开发(5)—— APP接口实例——单例模式连接数据库
查看>>
windows7怎么设置并链接“L2TP ***”
查看>>