假设我有以下功能
public static void myfunc(String filename) {
new FileInputStream(filename);
}
当我调用该函数时,是否会因为 FileInputStream 从未释放而导致资源泄漏?
以及将来的引用,有没有办法可以验证调用函数后资源尚未释放?
最佳答案
是的,存在资源泄漏。大多数 IDE(例如 Eclipse)都会发出警告来指示这一点。您可能应该这样做:
public static void myfunc(String filename) throws IOException {
FileInputStream stream = null;
try {
stream = new FileInputStream(filename);
...
} finally {
stream.close();
}
}
或者,如果您使用的是 Java 7,则可以使用 try-with-resource声明。
关于Java - 内联表达式的资源释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14590706/