例如:InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
br.close();//先关依赖流
isr.close();
是这样对吧?
还有那个节点流是不是字节流,对这个概念不太懂,处理流也不懂,能指个具体例子吗?跪求啦!!!
流按照不同分类,有字节流和字符流之分,还有节点流和处理流之分,不是一类概念。最根本的流有InputStream,OutputStream,Writer,Reader,任何关于流的处理都是对应这四种流(最后作为参数传递给某个处理流),按照我的理解(因为实在是没分过处理流和节点流~~),包在外边的流都是处理流,按照你举的例子,当调用了某个处理流的方法,就必须先关闭处理流,这是很容易理解的道理,比如说调用了br.read()方法,因为这个方法是阻塞式的,br是从isr中读,isr从System.in中读,直接把System.in关了肯定会抛异常;
如果使用的是jdk7.
自动的资源管理机制
在 Java 程序中,处理所有可能的失败路径是困难的,关闭资源也是相对困难的,因此在 Java 7 的实现中,资源管理获得了编译器的帮助,通过定义一个在资源上接口使得编译器能够自动在合适的时候来关闭资源,释放内存等资源。
自动资源管理示例