Java中的串流链(Stream Chain)是指将多个输入/输出流串联在一起形成的流链,使得数据可以在这些流之间传递。通过串流链可以实现复杂的IO操作,并且可以轻松地扩展和组合不同类型的数据源和目标以达到最大的适应性。串流链中的每一个流都必须连接一个来源和一个目的地才能构成一个有效的串流链。
一般来说,串流链需要将两个或多个流连接在一起才能实现有意义的操作,其中一个流作为低层的连接,负责将数据从一个地方传递到另一个地方,而另一个流作为高层则是通过提供的各种方法对这些数据进行操作和处理。
以对象序列化串流链为例,FileOutputStream有可以向文件写入字节的方法,但我们通常不会直接写字节,而是通过ObjectOutputStream以对象层次的观点来写入。同时考虑到良好的面向对象设计,每个类只需要做好一件事(单一职责原则),FileOutputStream把字节写入文件,ObjectOutputStream把对象转换成写入流的数据。当我们调用ObjectOutputStream的writeObject()方法时,对象会被转换成流送到FileOutputStream来写入文件。
public static void main(String[] args) {
Person person = new Person("张三", 18);
File file = new File("person.ser");
try (
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file))
) {
// 序列化
oos.writeObject(person);
// 反序列化
Person p = (Person) ois.readObject();
System.out.println(p);
} catch (Exception e) {
e.printStackTrace();
}
}