Jay*_*Jay 2 java try-with-resources
我在我的代码中使用try-with-resource块,想知道是否需要在方法结束时关闭资源或不需要?
try (S3Object object = s3.getObject(new GetObjectRequest(bucketName, key));
BufferedReader br = new BufferedReader(new InputStreamReader(object.getObjectContent()));
BufferedWriter bw = new BufferedWriter(new FileWriter(new File("output.txt")))){
String line;
while((line=br.readLine())!=null){
bw.write(line);
bw.newLine();
bw.flush();
}
}
Run Code Online (Sandbox Code Playgroud)
没有.
try-with-resources语句确保在语句结束时关闭每个资源.实现java.lang.AutoCloseable的任何对象(包括实现java.io.Closeable的所有对象)都可以用作资源.
如果您使用的是java 6或更早版本:
在Java SE 7之前,您可以使用finally块来确保关闭资源,无论try语句是正常还是突然完成.
更新:
您可以在try-with-resources语句中声明一个或多个资源.
正如您在代码中使用的那样.
您不必关闭在 try 子句中定义的资源。但是,根据您的示例,尝试的正文中也包含以下内容:
BufferedWriter bw = new BufferedWriter(new FileWriter(new File("output.txt"))))
Run Code Online (Sandbox Code Playgroud)
并且您的代码没有关闭该资源。这是错误的(保持文件系统句柄打开很可能是真正的资源泄漏)。
换句话说:您可能想要添加bw到您的 try-with-resources 子句中,因此它与 的定义一起出现S3Object object(请参阅此处的示例)。
| 归档时间: |
|
| 查看次数: |
373 次 |
| 最近记录: |