xinye_bao 2009-11-30 11:51
浏览 333
已采纳

java 解压 zip文件的问题

项目中遇到问题,所以请各位帮忙。

目前通过webservice传过来一个zip文件的字节流(),需要解压后得到文件内容(转成字符串就可以)。
我在网上查了一下ZIP解压的资料,java提供的方法只能解压磁盘上的文件,没有提供解压字节流的方法,
目前只能通过将zip文件字节流保存成本地zip文件,之后读取本地ZIP文件解压后保存到本地,再读取本地解压后的文件得到内容。

其实上面的过程中,保存到本地的过程是多余的,请问有没有什么办法实现处理在内存中完成,即ZIP字节流直接在内存中解压后得到文件内容。谢谢!

[b]问题补充:[/b]
回复moshalanye:
我已经把压缩的输入流转成了ZipInputStream,可是里面的内容怎么取出来啊。
ZipInputStream没有提供取出解压后的流的方法啊。
[b]问题补充:[/b]
问题解决了,果然ZipInputStream的read(byte[] b, int off, int len) 方法就可以了。谢谢!
ZipInputStream zis = new ZipInputStream (new ByteArrayInputStream(zippedByte));
ZipEntry entry;
if ((entry = zis.getNextEntry()) != null) {
int count;
byte data[]=new byte[BUFFER];
while ((count = zis.read(data))!= -1) {
//对Data的操作
}

  • 写回答

6条回答 默认 最新

  • 宁静-夏天 2009-12-01 08:37
    关注

    那你是java.util.zip.ZipInputStream的API不熟悉了,
    你去看下getNextEntry()方法的解释

    zipInputStream 因为是针对压缩包,
    包中不一定只有一个文件,不能按照一般的inputStream去直接使用的

    ZipInputStream zis =初始化;
    ZipEntry entry;
    while ((entry = zis.getNextEntry()) != null) {
    把zis当作一个文件的inputStream直接使用,
    一个文件一个entry.
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 请问一下这个运行结果是怎么来的
  • ¥15 这个复选框什么作用?
  • ¥15 单通道放大电路的工作原理
  • ¥30 YOLO检测微调结果p为1
  • ¥20 求快手直播间榜单匿名采集ID用户名简单能学会的
  • ¥15 DS18B20内部ADC模数转换器
  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下