怎样读取zip文件中的数据,各位高手请赐教

Goal_Goal_Goal 2002-03-07 11:35:27
下面是我读取zip文件中的图标的代码
ZipFile file=new ZipFile("g:/util.zip");
java.util.Enumeration entrys=file.entries();
while(entrys.hasMoreElements()){
ZipEntry subEntry=(ZipEntry)entrys.nextElement();
if(!subEntry.isDirectory()&&subEntry.getName().endsWith(".gif")){
InputStream stream=file.getInputStream(subEntry);

byte[] bytes=new byte[stream.available()];

stream.read(bytes);
ImageIcon image=new ImageIcon(bytes);
System.out.println("ddddd="+image);
}

//System.out.println("subFile="+subFile.getName());
}
可是读出来发现image为null,但如果把bytes写到本地文件中,再由文件中读取便能读的到,这是为什么?
...全文
61 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jimjxr 2002-03-20
  • 打赏
  • 举报
回复
检查一下bytes的大小是不是实际的大小,把改过的代码贴上来看看。
Goal_Goal_Goal 2002-03-19
  • 打赏
  • 举报
回复
to jimjxr(宝宝猫):
我用你的方法读出的bytes构造IMAGE还是为NULL,不知还有什么问题
Goal_Goal_Goal 2002-03-18
  • 打赏
  • 举报
回复
请问有没有不构造本地GIF文件就能读取ZIP文件里图标的方法,大家帮帮忙。
jimjxr 2002-03-18
  • 打赏
  • 举报
回复
stream.read(bytes);这句有问题,read不保证把所有字节都一次读入bytes,你应该取返回值int len = stream.read(bytes);,这个len告诉你读了多少。一般而言从stream里读都要做一个循环反复读的,直到len==-1表示读完了为止。
wolfsquare 2002-03-15
  • 打赏
  • 举报
回复
读写文件的代码呢?
Goal_Goal_Goal 2002-03-15
  • 打赏
  • 举报
回复
各位大侠,能不能给我一点提示啊
memphis0815 2002-03-15
  • 打赏
  • 举报
回复
可能因为从zipinputstream中读出的是没有解压的数据,所以不能用它生成image
而用zipoutputstream写到gif后数据就解压了,这样在用它生成image就没问题了
所以你可以试试从一个zipoutputstream中读数据而后再生成image
Goal_Goal_Goal 2002-03-15
  • 打赏
  • 举报
回复
我把bytes写到本地gif文件中,再读取可以显示图标,可直接用bytes构造图标
却读不到,image为null,这是为什么?是不是不能这样构造?
ImageIcon image=new ImageIcon(bytes);

23,407

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧