如题。代码如下!
- 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文件