gpt4 book ai didi

java.io.IOException : Stream closed at java. util.zip.ZipInputStream.ensureOpen(ZipInputStream.java:66)

转载 作者:行者123 更新时间:2023-12-01 22:11:51 30 4
gpt4 key购买 nike

下面是代码片段。

while (iterator.hasNext()) {
FileItemStream item = iterator.next();
InputStream in = item.openStream();
ZipInputStream zin =new ZipInputStream(new BufferedInputStream(in));
for (ZipEntry zipEntry;(zipEntry = zin.getNextEntry()) != null; )
{
System.out.println("reading zipEntry " + zipEntry.getName());
if(zipEntry.getName().endsWith(".xls")){
POIFSFileSystem fs = new POIFSFileSystem(zin);
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);
Iterator rows = sheet.rowIterator();
while( rows.hasNext() ) {
... some code here
}
}
}
}

在读取一个“xls”文件后,我遇到异常,无法读取其他文件。提前致谢

最佳答案

您正在调用 POIFSFileSystem(InputStream) 构造函数,即 documented如:

Create a POIFSFileSystem from an InputStream. Normally the stream is read until EOF. The stream is always closed.

(强调我的。)

这意味着您将在第一次迭代后关闭 ZipInputStream - 您不想这样做。

请调用 POIFSFileSystem.createNonClosingInputStream :

Convenience method for clients that want to avoid the auto-close behaviour of the constructor.

换句话说:

if (zipEntry.getName().endsWith(".xls")) {
POIFSFileSystem fs = POIFSFileSystem.createNonClosingInputStream(zin);
...
}

关于java.io.IOException : Stream closed at java. util.zip.ZipInputStream.ensureOpen(ZipInputStream.java:66),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31668327/

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