BufferedReader 正确使用

mah*_*ood 3 java bufferedreader

我使用以下样式使用 BufferedReader 读取文件

try (BufferedReader br = new BufferedReader(new FileReader("my_file"))) {
  ...
  br.close();
} catch( IOException e ) {
  System.out.println( e.getMessage() );
} 
Run Code Online (Sandbox Code Playgroud)

我想知道的事情:

1-close()在正确的地方吗?

2- 我应该try..catch为`close()放置另一个吗?

3- 因为我使用了newfor br,是否足以调用close()或者我必须br = null为 GC编写?

4-FileReader已经被new编辑了,所以我应该销毁它吗?

Mic*_*ath 5

  1. 由于您使用try-with-resource语句,因此您无需明确关闭流。在任何情况下它都会自动关闭。如果您不使用 try-with-resource,那么它close()就会出现在错误的位置。为了确保您的资源始终关闭,您需要在finally块中调用 close()
  2. 如果您在 finally 块中调用 close() ,您也需要捕获它抛出的已检查异常。如果你使用 try-with-resource(就像你一样),你很好
  3. 你所有的变量都只存在于 try 块的范围内,所以你是安全的
  4. BufferedReader 关闭装饰的 Reader,因此您不必明确关闭它