1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| InputStreamReader reader = null; try { reader = new InputStreamReader(System.in); reader.read(); } catch (IOException e) { e.printStackTrace(); }finally { if( null != reader){ try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } }
|
可以在 try 后面的小括号中声明对象的实例化,此对象会提升为final类型,可以不使用 finally显示关闭流,会自动将资源关闭。
1 2 3 4 5
| try(InputStreamReader reader = new InputStreamReader(System.in)) { reader.read(); } catch (IOException e) { e.printStackTrace(); }
|
- 在 JDK9 中:
可以将reader 声明在 try之前,reader也会自动提升为 final类型。
1 2 3 4 5 6
| InputStreamReader reader = new InputStreamReader(System.in); try(reader) { reader.read(); } catch (IOException e) { e.printStackTrace(); }
|
如果有多个需要关闭的资源,可以将这些资源以英文逗号分隔,如:
1 2 3 4 5 6 7
| InputStreamReader reader = new InputStreamReader(System.in) OutputStreamWriter writer = new OutputStreamWriter(System.out) try(reader reader.read() } catch (IOException e) { e.printStackTrace() }
|