IO流(四)扩展

来源:互联网 发布:splice js参数 编辑:程序博客网 时间:2024/05/22 03:47

1. 序列流

作用: 把多个文件流按照一定顺序整合在一起

将少量文件整合成文件流

 FileInputStream fis1 = new FileInputStream("src/main/resources/a.txt");    FileInputStream fis3 = new FileInputStream("src/main/resources/c.txt");      SequenceInputStream sis = new SequenceInputStream(fis1, fis2);SequenceInputStream sis2 = new SequenceInputStream(sis, fis3);    int b;     while((b = sis2.read()) != -1) {                                               fos.write(b);                                                       }        sis2.close();        fos.close();    }
a.txt b.txt c.txt 的文本内容分别是123d.txt 123

把大量文件流整合在一起

  FileInputStream fis1 = new FileInputStream("src/main/resources/a.txt");           FileInputStream fis2 = new FileInputStream("src/main/resources/b.txt");            FileInputStream fis3 = new FileInputStream("src/main/resources/c.txt");          Vector<InputStream> v = new Vector<>();                            v.add(fis1);                                               v.add(fis2);        v.add(fis3);        Enumeration<InputStream> en = v.elements();                        SequenceInputStream sis = new SequenceInputStream(en);         FileOutputStream fos = new FileOutputStream("src/main/resources/d.txt");        int b;        while ((b = sis.read()) != -1) {            fos.write(b);        }        sis.close();        fos.close();    }

2. 内存输出流ByteArrayOutputStream

该输出流可以向内存中写数据, 把内存当作一个缓冲区, 写出之后可以一次性获取出所有数据,缓冲区会随着不断写入数据而增长,可用toByteArray,toString获得数据,关闭ByteArrayOutputStream 无效,也就是说此类中的方法在关闭流之后仍可以使用。

     FileInputStream fis = new FileInputStream("src/main/resources/a.txt");            ByteArrayOutputStream baos = new ByteArrayOutputStream();            int b;            while((b = fis.read()) != -1) {                baos.write(b);            }            //byte[] newArr = baos.toByteArray();                       //System.out.println(new String(newArr));            System.out.println(baos);            fis.close();

3. 对象操作流ObjecOutputStream

直接读写对象

        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("src/main/resources/h.txt"));//创建对象输出流        ArrayList<Test> list=new ArrayList<Test>();        list.add(p1);        list.add(p2);        oos.writeObject(list);        oos.close();        ObjectInputStream ois=new ObjectInputStream(new FileInputStream("src/main/resources/h.txt"));       ArrayList<Test> testList = (ArrayList<Test>) ois.readObject();        for(Test test1:testList){          System.out.println(test1.toString());     }        ois.close();    }
public class Test implements Serializable{    private String name;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Test(String name) {        this.name = name;    }    @Override    public String toString() {        return "Test{" +                "name='" + name + '\'' +                '}';    }}

注意:写出来的文件你看不懂