java解压到哪_如何在Java中更快地解压缩XZ文件?

我的SQLite db文件大小为85MB,使用XZ格式压缩,其大小已减少到16MB.我使用以下代码(和XZ for Java提供的JAR)在Android Jelly Bean中解压缩它:

try {

FileInputStream fin = new FileInputStream(path + "myFile.xz");

BufferedInputStream in = new BufferedInputStream(fin);

FileOutputStream out = new FileOutputStream(des + "myDecompressed");

XZInputStream xzIn = new XZInputStream(in);

final byte[] buffer = new byte[8192];

int n = 0;

while (-1 != (n = xzIn.read(buffer))) {

out.write(buffer, 0, n);

}

out.close();

xzIn.close();

}

catch(Exception e) {

Log.e("Decompress", "unzip", e);

}

解压缩成功完成,但完成时间超过两分钟.我认为这很长,因为压缩文件只有16MB而未压缩文件只有85MB.

我想知道我是否对代码做错了,或者有办法加速这个解压缩过程.

解决方法:

我认为你可以做的很少,以加快速度.如果将16Mb解压缩到85Mb需要2分钟,那么大部分时间都花在实际解压缩中,其余的很大一部分都在实际文件I / O中…物理层.

当然,你的代码没有任何明显的低效率.您正在使用BufferedInputStream进行读取并使用大缓冲区进行解码/写入.因此,您将有效地进行I / O系统调用. (添加BufferedOutputStream不会有任何区别,因为您已经从8192字节缓冲区进行大写操作.)

我建议的最好的方法是,您可以对代码进行分析,以了解热点的真正位置.但我怀疑你找不到任何可以改进的东西来改变它们.

I want to go for XZ because it has the best compression level in my case, which somewhat saves the downloading time… (with zip, the unzipping of this file takes only about 15 seconds!

那么,解压缩的额外CPU时间是使用压缩算法达到最大值所支付的价格.您需要确定哪个对您的用户更重要:更快的下载速度,或更快的数据库解压缩(安装?).

FWIW,ZIP解压缩可能在本机库中实现,而不是在纯Java中实现.它肯定适用于Oracle / OpenJDK JVM.

标签:java,android,compression,zip,xz

来源: https://codeday.me/bug/20190629/1322602.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值