首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >流关闭IO异常

流关闭IO异常
EN

Stack Overflow用户
提问于 2022-02-03 20:15:04
回答 1查看 1K关注 0票数 0

我试图压缩一个子文件夹并获得一个流关闭的异常

代码语言:javascript
复制
private static void zipSubFolder(ZipOutputStream out, File folder, int basePathLength) throws IOException{
            final int BUFFER = 2048;
    
            File[] fileList = folder.listFiles();
            BufferedInputStream origin = null;
            for (File file : fileList) {
                if (file.isDirectory()) {
                    zipSubFolder(out, file, basePathLength);
                } else {
                    byte[] data = new byte[BUFFER];
                    String unmodifiedFilePath = file.getPath();
                    String relativePath = unmodifiedFilePath
                            .substring(basePathLength);
                    try (FileInputStream fi = new FileInputStream(unmodifiedFilePath)) {
                        origin = new BufferedInputStream(fi, BUFFER);
                    }
                    ZipEntry entry = new ZipEntry(relativePath);
                    entry.setTime(file.lastModified()); // to keep modification time after unzipping
                    out.putNextEntry(entry);
                    int count;
                    while ((count = origin.read(data, 0, BUFFER)) != -1) {
                        out.write(data, 0, count);
                    }
                    origin.close();
                }
            }
        }

获得一行错误: while (计数=origin.read(数据,0,缓冲区)) != -1)

代码语言:javascript
复制
: java.io.IOException: Stream Closed
        at java.io.FileInputStream.read(FileInputStream.java:313)
        at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
EN

回答 1

Stack Overflow用户

发布于 2022-02-03 21:27:29

当您离开{}括号时,try资源语句将立即关闭FileInputStream fi。尝试将整个代码放入try资源括号中。

来自java : BufferedInputStream向另一个输入流添加功能,即缓冲输入和支持标记和重置方法的能力。创建BufferedInputStream时,将创建内部缓冲区数组。当读取或跳过流中的字节时,内部缓冲区将根据需要从包含的输入流中重新填充,一次填充多个字节。标记操作记住输入流中的点,而重置操作使自最近的标记操作后读取的所有字节在从所包含的输入流中提取新字节之前重新读取。

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

https://stackoverflow.com/questions/70977711

复制
相关文章

相似问题

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