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