gpt4 book ai didi

java - 调用 java.util.zip.ZipFile.getInputStream() 时出现 GroovyCastException

转载 作者:行者123 更新时间:2023-12-01 20:22:18 24 4
gpt4 key购买 nike

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

这是我试图实现此目的的方法:

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: Cannot cast object 'java.util.zip.ZipFile$ZipEntryIterator@49defb82' with class 'java.util.zip.ZipFile$ZipEntryIterator' to class 'java.io.InputStream'

看起来 .getInputStream(entry) 没有返回“java.io.InputStream”,但它应该根据 documentation

这个“ Actor ”是从哪里来的?

最佳答案

您将从闭包中返回,这会在您调用该方法时引发强制转换异常。

简单的解决方法是将常规迭代更改为普通的 for 循环:

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 实例。

关于java - 调用 java.util.zip.ZipFile.getInputStream() 时出现 GroovyCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44495116/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com