一:内存流 1.ByteArrayOutputStream (内存输出流) public ByteArrayOutputStream() public byte[] toByteArray() 创建一个新分配的 byte 数组。其大小是此输出流的当前大小,并且缓冲区的有效内容已复制到该数组中。 public String toString() 2.ByteArrayInputStream (内存输入流) public ByteArrayInputStream(byte[] buf)
二:数据流 1.DataOutputStream(数据输出流) 可以将基本数据类型以二进制的方式写入,附加数据类型。 DataOutputStream(OutputStream out)
2.DataInputStream(数据输入流) DataInputStream(InputStream in) 根据数据输出流的写入顺序依次读取数据。
三:序列化与反序列化 序列化:将对象转化成二进制形式的过程。易于保存、易于传输。 反序列化:将二进制数据转化成对象的过程。 只有实现了java.io.Serializable接口的类的对象才具有序列化和反序列化的功能。
1.ObjectOutputStream(对象输出流) ObjectOutputStream(OutputStream out) writeObject(Object obj) 将指定的对象写入 ObjectOutputStream,封装了序列化的过程 2.ObjectInputStream(对象输入流) ObjectInputStream(InputStream in) Object readObject() 封装了反序列化的功能
所谓序列化,指的是序列化对象中的属性(不包括方法和静态属性)。 被transient或static修饰的属性不能被序列化。
serialVersionUID属性必须一致,才能成功进行序列化与反序列化。 如果不显示声明serialVersionUID属性,则编译器会默认自动生成,但是 由编译器生成的serialVersionUID属性的值会非常敏感。
四:RandomAccessFile类 (了解) RandomAccessFile(File file, String mode) public int skipBytes(int n) 尝试跳过输入的n个字节以丢弃跳过的字节 public long getFilePointer()
五:StringReader StringReader(String s)