这是我参与更文挑战的第 15 天,活动详情查看: 更文挑战
日积月累,水滴石穿 ?
一、ObjectOutputStream
java.io.ObjectOutputStream extends OutputStream
,将Java对象的原始数据类型写出到文件,实现对象的持久存储。也就是序列化
。只有实现java.io.
Serializable接口的对象才能写入流中。
- 继承自父类的成员方法:
-
void close():关闭此输出流并释放与此流相关联的任何系统资源。
-
void flush():刷新此输出流并强制任何缓冲的输出字节被写出。
-
void write(byte[] b):将 b.length字节从指定的字节数组写入此输出流。
-
void write(byte[] b, int off, int len):从指定的字节数组写入 len个字节,从偏移 off开始输出到此输出流。
-
void write(int b):将指定的字节写入此输出流。
-
- 特有的成员方法
- void writeObject(Object obj):将指定的对象写入
ObjectOutputStream
中。
- void writeObject(Object obj):将指定的对象写入
构造方法
- public ObjectOutputStream(OutputStream out) : 创建一个指定
OutputStream
的ObjectOutputStream
对象。
构造举例,代码如下:
FileOutputStream fos = new FileOutputStream("a.txt");
ObjectOutputStream out = new ObjectOutputStream(fos);
复制代码
参数
OutputStream out:字节输出流
写出对象
- public final void writeObject (Object obj) : 将指定的对象写入到文件中。
提供一个 Student
对象,对象需要实现Serializable
接口,不然会抛出一个名为NotSerializableException
的异常。
serialVersionUID
:该版本号的目的在于验证序列化的对象和对应类是否版本匹配,可以防止出现InvalidClassException
异常。
public class Student implements Serializable{
private static final long serialVersionUID = 1L;
private Long id;
private String name;
/**
* transient瞬态修饰成员,不会被序列化
*/
private transient Integer age;
//Get Set 进行省略。。。。
}
public static void main(String[] args) throws Exception {
FileOutputStream fos = new FileOutputStream("ee.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
Student student = new Student();
student.setId(1L);
student.setName("GOGNJ");
student.setAge(24);
oos.writeObject(student);
oos.close();
fos.close();
}
复制代码
二、ObjectInputStream
java.io.
ObjectOutputStream extends
InputStream,把文件中保存的对象,以流的方式读取出来使用。也就是反序列化
。
- 继承自父类的成员方法:
- void close():关闭此输入流并释放与流相关联的任何系统资源。
- abstract int read():从输入流读取数据的下一个字节。
- int read(byte[] b):从输入流读取一些字节数,并将它们存储到缓冲区 b 。
- int read(byte[] b, int off, int len):从输入流读取最多 len字节的数据到一个字节数组。
- 特有的成员方法:
- Object readObject():从
ObjectInputStream
读取一个对象。
- Object readObject():从
构造方法
- ObjectInputStream(InputStream in):创建从指定的
InputStream
读取的ObjectInputStream
对象。
构造举例,代码如下:
FileInputStream fis = new FileInputStream("ee.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
复制代码
参数
InputStream in:字节输入流
读取对象
- public final Object readObject () : 读取一个对象。
public static void main(String[] args) throws Exception {
FileInputStream fis = new FileInputStream("ee.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
Student s = (Student)ois.readObject();
ois.close();
fis.close();
System.out.println(s.toString());
}
输出结果:Student{id=1, name='GOGNJ', age=null}
复制代码
- 如你对本文有疑问或本文有错误之处,欢迎评论留言指出。如觉得本文对你有所帮助,欢迎点赞和关注。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END