呵呵,其实蛮简单的
你这么想
XXXOutputStream(OutputStream);
里面的构造函数的参数只要是OutputStream的嵌套多少层都没有关系只要是OutputStream的
其它的同理................

解决方案 »

  1.   

    Java 的输入输出可以分为两大类:读写字节的(InputStream/OutputStream)和读写字符的(Reader/Writer)构造时的嵌套不是 Java IO 本身的特性,只不过这种方式在这方面用的比较多而已。这在设计模式上叫做 Wrapper 或 Decorator
    吧。这样写主要是为了简便,例如要构造一个 BufferedReader,它有一个这样的构造函数
    BufferedReader(Reader in) 
    这样你就需要一个 Reader,具体是哪种Reader 要看你的应用,比如要从文件中读,就应该用FileReader,FileReader又有这样一些构造函数
    FileReader(File file) 
    FileReader(java.io.FileDescriptor fd) 
    FileReader(String fileName)  根据情况可以用任何一个,为了让问题复杂一些,我们用第一个,这样就又需要构造一个File,
    我们用File的这个构造函数
    File(String pathname)这样我们可以用3行代码来完成上面的工作File file = new File("test.txt");
    FileReader reader = new FileReader(file);
    BufferedReader bufReader = new BufferedReader(reader);为了简单,就成了常见的嵌套方式:BufferedReader = new BufferedReader(new FileReader(new File("test.txt")));这样写的好处是只有一行代码,但如果老板按代码行数付钱,那我们就亏大发了,另外少声明了两个变量 file 和 reader
    这样写的前提是你不需要引用这些“中间”对象,否则就必须象第一种那样写。不知道我说清楚了没有?