Java BufferedReader的正确使用
我使用以下样式读取带有BufferedReader的文件Java BufferedReader的正确使用,java,bufferedreader,Java,Bufferedreader,我使用以下样式读取带有BufferedReader的文件 try (BufferedReader br = new BufferedReader(new FileReader("my_file"))) { ... br.close(); } catch( IOException e ) { System.out.println( e.getMessage() ); } 我想知道的事情: 1-close()是否在正确的位置 2-我是否应该为“close()”添加另一个try..ca
try (BufferedReader br = new BufferedReader(new FileReader("my_file"))) {
...
br.close();
} catch( IOException e ) {
System.out.println( e.getMessage() );
}
我想知道的事情:
1-close()
是否在正确的位置
2-我是否应该为“close()”添加另一个try..catch
3-由于我对br
使用了new
,调用close()
就足够了,还是我必须为GC编写br=null
4-
FileReader
已被新建
ed,我是否应该销毁它?1-2-最好与finally或resource块一起使用。否则,如果之前发生异常,将不会调用close
3-调用close()就足够了。将对象设置为null不会删除引用。当不再有对对象的引用时,GC将销毁这些对象。因此,不要手动销毁对象 您正在代码中使用
try with resources
语句。在本例中,try with resources
语句中声明的资源是BufferedReader
。声明语句出现在try
关键字后面的括号内。Java SE 7及更高版本中的类BufferedReader
实现了接口Java.lang.AutoCloseable
。由于BufferedReader
实例是在try with resource
语句中声明的,因此无论try
语句是正常完成还是突然完成,它都将关闭。您可以从中了解有关此声明的更多信息。下面是修改后的版本:
try (BufferedReader br = new BufferedReader(new FileReader("my_file"))) {
// your logic
} catch (IOException e) {
System.out.println(e.getMessage());
}
您正在使用语句。您不需要显式地对您的读者进行关闭。事实上,文件规定:
try with resources语句确保在语句末尾关闭每个资源。任何实现java.lang.AutoCloseable的对象(包括实现java.io.Closeable的所有对象)都可以用作资源
此外,文件读取器由BufferedReader修饰,关闭BufferedReader应关闭文件读取器
close()
将位于错误的位置。要确保资源始终处于关闭状态,需要在finally
块中调用close()