整理自网上:输出流的write方法只是将数据写入缓冲区。部分流中close方法内会调用flush,将缓冲区内的数据写入目标文件。所以即使没有close,仅仅flush也是可以保证文件的正常写入。如果没有close也没有flush,虽然已经在内存缓冲中写入,但并没有写到文档中,所以就会出现目标文件还是为空的情况。close可以节省内存,如果总是调用流,但不关闭,导致内存大量占用,程序崩溃。因为这些文件资源是jvm不能自动回收的。
对于流的关闭顺序,一种是按照后创建流先关闭的原则
另一种直接关闭包装流即可,例如:
BufferedReader reader =
new
BufferedReader(
new
InputStreamReader(
new
FileInputStream(
"a.txt"
)));
//这里处理你的业务逻辑
reader.close();
//在这里关闭就把所有流都给关掉了,不需要再额外去关闭了