http://www.eaoo.com/design/list.asp?classid=2&Nclassid=14

解决方案 »

  1.   

    这个不用过分担心,我以前也想过这个问题,不记得在那本书上看到的解释:
    在对I/O的操作时,如果初始化使用到多个I/O类,这只要将顶层的关闭,则整个I/O链上节点都会自动关闭。
    也就是说,如果你关闭了在zipStream,则bufStream、fileStream会自动进行close操作,这一点实现起来也不困难。不明白我话再发消息给我:〉
      

  2.   

    我编了一个演示程序,你在C盘下放一个文本型的文本文件,名为temp.txt-----------------------------------------------------------import java.io.*;public class IOModel
    {
    public static void main(String[] args)
    throws Exception
    {
    FileReader fr=new FileReader("c:\\temp.txt");
    BufferedReader br=new BufferedReader(fr); System.out.println((char)fr.read());
    System.out.println(br.readLine()); br.close(); System.out.println((char)fr.read());
    }
    }
    运行这个程序到System.out.println((char)fr.read());时就会抛出异常Exception in thread "main" java.io.IOException: Stream closed
            at sun.nio.cs.StreamDecoder.ensureOpen(StreamDecoder.java:37)
            at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:150)
            at sun.nio.cs.StreamDecoder.read0(StreamDecoder.java:129)
            at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:115)
            at java.io.InputStreamReader.read(InputStreamReader.java:151)
            at IOModel.main(IOModel.java:15)由此证明在br.close()的时候,fr也执行了close操作。