问答详情
源自:5-1 字节字符转换流

请教文件关闭问题

FileInputStream in = new FileInputStream(srcFile);
        InputStreamReader isr = new InputStreamReader(in);
        
        FileOutputStream out = new FileOutputStream(desFile);
        OutputStreamWriter osw = new OutputStreamWriter(out);

最后关闭的时候只要isr.close(); osw.close();这两个都关闭了就行吗?in和out不需要关闭吗?


提问者:liusongsir 2015-07-29 10:10

个回答

  • 特地学java
    2016-03-02 13:38:00

    但是我刚才也试了下,

    FileInputStream inf=new FileInputStream("Demo/dddd.txt");
    InputStreamReader isr=new InputStreamReader(inf,"UTF-8");

    FileOutputStream outf=new FileOutputStream("Demo/dos.dat");
    OutputStreamWriter osw=new OutputStreamWriter(outf);

    isr.close();
    osw.close();

    byte[] s=new byte[8*1024];
    while ((c=inf.read(s, 0, s.length))!=-1) {
          outf.write(s, 0, c);
    }

    这样去读取的时候,会报read error,跟提前关掉inf和outf去读取时候一样

  • 特地学java
    2016-03-02 11:03:25

    我本人也不太清楚,但是我问了工作群里面,说的是都需要关闭

  • 傻熊
    2015-08-31 23:05:02

    in和out是低级流,外面套着isr和osw高级流,关闭的时候只需要关闭最外层的就可以了。

  • 好帮手慕珊
    2015-07-29 17:18:30

    都需要关闭