22打印流printStream 合并流

1.打印流

底层提供打印或者打印换行功能(打印就是输出),和系统流一起用就是打印到控制台 ,System.out.println Sytem.err.println

public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
  //打印流
        PrintStream p=new PrintStream("D:\\1.txt");
        //写数据
        p.write("sbc".getBytes());
        //打印到具体位置--------相当于write
        p.print("xwq");
    }

2.合并流

SequeceInputStream

要使用这个类,所以我们需要这个类的对象,所以我们看SequeceInputStream的构造函数

SequenceInputStream(Enumeration<? extends InputStream> e)
初始化新创建的 SequenceInputStream记住的说法,它必须产生对象的运行时类型是 InputStream Enumeration
SequenceInputStream(InputStream s1, InputStream s2)
初始化新创建的 SequenceInputStream记住两个参数,将其写入的命令,第一 s1然后 s2,提供字节是从这 SequenceInputStream读。 

第一个构造函数里面的参数是Enumeration 类型 ,这个类型是Vector集合的迭代器,是通过Vector的elements返回的。所以需要用Vector存储要合并的输入流。

    public static void main(String[] args) throws IOException {
        //提供输入流-------提供待合并的数据
        FileInputStream in1=new FileInputStream("D:\\1.txt");
        FileInputStream in3=new FileInputStream("D:\\3.txt");
        FileInputStream in4=new FileInputStream("D:\\4.txt");
        //创建集合对象
        Vector< InputStream> v=new Vector<InputStream>();
        //把输入流对象添加到集合中
        v.add(in1);
        v.add(in3);
        v.add(in4);
        //获取到Enueration---把集合中的所有输入流对象存放到e对象中
        Enumeration<InputStream>e=v.elements();
        //创建合并流对象-把含有输入流对象的e返稿合并流对象中
        SequenceInputStream sis=new SequenceInputStream(e);
        //文件字节输出流
        FileOutputStream os=new FileOutputStream("D:\\5.txt");
        //用一个对象统一读取三个对象的字节流,就相当于合并
        byte[] bs=new byte[10];
        int len=-1;
        while((len=sis.read(bs))!=-1) {
            os.write(bs,0,len);
        }
        //关流
        sis.close();
        os.close();
    }

过程是:1.提供多个输入流对象

            2.存储在Vector集合对象中

           3.获取Enumeration对象

           4.最后构建成合并流对象并用统一对象进行对多个对象进行统一读取 1

 

posted @ 2019-07-25 11:02  三十六烦恼风x  阅读(209)  评论(0编辑  收藏  举报