输入流:InputStream和reader;
输出流:OutputStream和Writer;
按处理数据单元分:
字节流: byte[] InputStream和OutputStream;
字符流:reader和Writer;
按功能分:
节点流:可以直接从数据源或目的地读写数据。
处理流(包装流):不直接连接到数据源或目的地,是其他流进行封装,目的主要是简化操作和提高性能,辅助节点流。
文本文件的读写:char[]
用FileInputStream和FileOutputStream读写;
用BufferedReader和BufferedWriter读写;
二进制文件的读写:
用DataInputStream和DataOutputStream读写;
对象的读写:
用ObjectInputStream和ObjectOutputStream读写;
序列化和反序列化:
序列化:必须实现Serialiable接口
序列化:将内存中的对象转换为流
反序列化:将流转换为内存中的对象
目的:持久化对象,将对象在网络上进行传输
类必须实现Serializable接口;
不需要序列化的字段前加transient
例如:
Xuliehua n=new Xuliehua(“张三”);
//序列化
ObjectOutputStream cv=new ObjectOutputStream(new FileOutputStream(“e:abc.txt”));
cv.writeObject(n);
cv.close();
//反序列化
ObjectInputStream sb=new ObjectInputStream(new FileInputStream(“e:abc.txt”));
Xuliehua b=(Xuliehua) sb.readObject();
System.out.println(b);
sb.close();