java - java中的资源没有被释放

标签 java resources

所以,我有一个读取文件数据的函数,在本例中是图像大小。但完成后似乎无法正确释放文件。之后我无法移动这些文件。如果我不调用这个函数,一切都会正常,但如果我这样做,我总是会得到“文件正在使用..等等等等”

private void setMoveType() {
    ImageInputStream in = null;
    try {
        in = ImageIO.createImageInputStream(new FileInputStream(file.toString()));
        try {
            final Iterator<ImageReader> readers = ImageIO.getImageReaders(in);
            if(readers.hasNext()) {
                ImageReader reader = readers.next();
                try {
                    reader.setInput(in);
                    try {
                        moveType = Helper.getMoveType(new Dimension(reader.getWidth(0), reader.getHeight(0)));
                    } catch (IOException e) {
                        System.err.println("IOException: " + e.getMessage());
                        return;
                    }
                } catch(Exception e) {
                    System.err.println("ReaderException: " + e.getMessage());
                } finally {
                    reader.dispose();
                }
            }
        } catch(Exception e) {
            System.err.println("MoveTypeSetException: " + e.getMessage());
        }
    } catch (IOException e) {
        System.err.print("IOException: failure while creating image input stream");
        System.err.println(" -> createImageInputStream Error for file: " + file.getFileName());
        return;
    } finally {
        if(in != null) {
            try {
                in.close();
            } catch (IOException e) {
                System.err.println("IOException: " + e.getMessage());
                return;
            }
        }
    }
}

编辑:ImageInputStream 未正确关闭

EDIT2:FileInputStream 未关闭

最佳答案

该流也应该关闭:

new FileInputStream(file.toString())

关于java - java中的资源没有被释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26952699/

相关文章:

java - 当 bean 具有带有 @Formula 注释的属性时,findRowCount 不起作用

c# - 将 XML 片段存储在项目资源中

grails - 找不到构造函数 'java.lang.String'的参数0

android - Android 平板电脑和手机使用哪种资源结构?

java - 通过 javax.inject.Provider 进行 Spring 注入(inject)太慢

java - 如何让我的申请持续一段时间?

java Thread类的run()方法

java - if 语句应该打印字符串值

java - 颜色值可绘制资源问题

c# - System.Windows.Application.GetResourceStream 返回 null