当前位置: 代码迷 >> J2SE >> java的io中的文件关闭有关问题
  详细解决方案

java的io中的文件关闭有关问题

热度:3174   发布时间:2013-02-25 00:00:00.0
java的io中的文件关闭问题!
如题。代码如下!
Java code
import java.io.*;public class TestBufferStream1 {    public static void main(String args[]) {        try        {            FileInputStream fis = new FileInputStream("c:/java/IO/TestFileInputStream.java");            BufferedInputStream bis = new BufferedInputStream(fis);            int c = 0;            System.out.println(bis.read());            System.out.println(bis.read());            bis.mark(100);            for(int i = 0; i < 10 && ((c = bis.read()) != -1); i ++ ) {                System.out.print((char)c + " ");            }            bis.reset();            System.out.println();            for(int i = 0; i < 10 && ((c = bis.read()) != -1); i ++ ) {                System.out.print(c + " ");            }            bis.close();           //为什么fis不用关闭那!?        }        catch (IOException e)        {            e.printStackTrace();        }    }}


------解决方案--------------------------------------------------------
bis.close(); 的关闭里会把你构造函数里传给它的FileInputStream给close掉的。
所以fis 不用关了。
------解决方案--------------------------------------------------------
缓冲流关闭就可以了,它会调用内层的流关闭方法
------解决方案--------------------------------------------------------
FileInputStream是文件输入流,BufferedInputStream是对FileInputStream进行了一个包装,因此只要把bis.close()关闭了fis文件
  相关解决方案