客官,往这瞅
背景
在我们日常的开发过程中,会调用需要手动close的资源。比如InputStream, OutputStream ,java.sql.Connection,socket等。别想着java有了GC,GC大大说,不是我家的,谁爱用谁管。得嘞,我们自己管。
没有对比就没有伤害,我们来伤害吧!
对比伤害
一、try-finally
从以往来看,try-finally语句是保证资源正确关闭的最佳方式,即使是在程序抛出异常或返回的情况下:
static String firstLineOfFile(String path) throws IOException {
BufferedReader br = new BufferedReader(new FileReader(path));
try {
return br.readLine();
} finally {
br.close();
}
}
return "";
}
这样看起来并不坏,但是当添加第二个资源时,情况就会变得更糟:
static void copy(String src, String ds