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条)

报告相同问题?

悬赏问题

  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面