所以,我有一个读取文件数据的函数,在这种情况下,图像大小。但完成后它似乎不能正确释放这些文件。之后我无法移动这些文件。如果我不叫这个功能一切正常,但如果我做我总是得到“使用文件..等等等等等等”未在java中发布的资源
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没有关闭
用[尝试 - 与资源(https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html)语句。 – Tom
@汤姆也没有运气。 – IntoDEV