首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GroovyCastException在调用java.util.zip.ZipFile.getInputStream()时

GroovyCastException在调用java.util.zip.ZipFile.getInputStream()时
EN

Stack Overflow用户
提问于 2017-06-12 08:50:11
回答 1查看 248关注 0票数 0

我正在尝试从jar存档中读取一个文件,并将其作为一个java.io.InputStream返回。

下面是我试图实现这一目标的方法:

代码语言:javascript
运行
复制
InputStream getExportInfo(path) {
  def zipFile = new java.util.zip.ZipFile(new File(path))

  zipFile.entries().each { entry ->
    def name = entry.name
    if (!entry.directory && name == "ExportInfo") {
      java.io.InputStream is = zipFile.getInputStream(entry)
      return is
    }
  }
}

但是,我从控制台得到了这个错误:

org.codehaus.groovy.runtime.typehandling.GroovyCastException:不能将类为“java.util.zip.ZipFile$ZipEntryIterator”的对象'java.util.zip.ZipFile$ZipEntryIterator@49defb82‘转换为“java.io.InputStream”类

它看起来像是.getInputStream(条目)不返回'java.io.InputStream',但是它应该根据文档返回

这个“演员”是从哪里来的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-12 08:57:43

您将从闭包返回,当调用该方法时,这会带来强制转换的效果。

简单的解决办法是将groovy迭代更改为普通的for循环:

代码语言:javascript
运行
复制
InputStream getExportInfo(path) {
  def zipFile = new java.util.zip.ZipFile(new File(path))

  for( ZipEntry entry in zipFile.entries() ){
    def name = entry.name
    if (!entry.directory && name == "ExportInfo") {
      return zipFile.getInputStream(entry)
    }
  }
}

然后它将中断循环并返回您的inputStream实例。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44495116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档