java中输出流不关闭为什么不能写入

如题所述

java中输出流不关闭是可以写入的,只不过不关闭的话,使用时间长了,会导致严重的内存泄露,导致程序退出。

 æ ‡å‡†è¾“入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流等等,java中将输入输出抽象称为流,就好像水管,将两个容器连接起来。将数据冲外存中读取到内存中的称为输入流,将数据从内存写入外存中的称为输出流。

import java.io.BufferedReader;  
import java.io.IOException;  
import java.io.InputStreamReader;  
  
public class StandardInputOutput {  
    public static void main(String args[]) {  
        String s;  
        // åˆ›å»ºç¼“冲区阅读器从键盘逐行读入数据  
        InputStreamReader ir = new InputStreamReader(System.in);  
        BufferedReader in = new BufferedReader(ir);  
        System.out.println("Unix系统: ctrl-d æˆ– ctrl-c é€€å‡º"  
                + "\nWindows系统: ctrl-z é€€å‡º");  
        try {  
            // è¯»ä¸€è¡Œæ•°æ®ï¼Œå¹¶æ ‡å‡†è¾“出至显示器  
            s = in.readLine();  
            // readLine()方法运行时若发生I/O错误,将抛出IOException异常  
            while (s != null) {  
                System.out.println("Read: " + s);  
                s = in.readLine();  
            }  
            // å…³é—­ç¼“冲阅读器  
            in.close();  
        } catch (IOException e) { // Catch any IO exceptions.  
            e.printStackTrace();  
        }  
    }  
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-11-14
不是不关闭就不能写入,而是已经在内存缓冲中写入,但并没有写到文档中,所以你看不到
你可以加入调用 flush()方法 刷新该缓冲,那个关闭输出流 和flush()方法一样,都可以刷新缓冲,但close可以节省内存,如果总是调用流,但不关闭,导致内存大量占用,程序崩溃本回答被提问者采纳
第2个回答  2010-11-15
调用flush()清除一下缓存就行了