1.首先先创建一个Student类
声明私有变量 id,name,age,并构造有参,无参,getter和setter方法以及同toStiring()方法
2.调用Student类创建一个st对象
Student st = new Student(1,"张三",22);
3. 把对象保存为文件需要借用 ObjectOutputStream高级流
ObjectOutputStream 流用保存实现 implements Serializable接口
ObjectOutputStream是一个高级流, 将 Java 对象的基本数据类型和图形写入 OutputStream
所以在Student类后面需要添加implements Serializable接口实现序列化
为什么要实现序列化呢
我们在使用Dubbo远程调用服务框架时,需要把传输的Java对象实现Serializable接口,即让Java对象序列化,因为这样才能让对象在网络上传输。
同时方便在类中添加属性
idea中有高级工具会自动帮我们实现序列化,看下图
配置完成之后鼠标放在Student类上,然后实例化完成..
首先创建一个objiectIn.java进行把对象写进文件和读取文件中的对象
4. try catch
try(){
}catch(Exception e){
e.printStackTrace();
}
然后使用 ObjectOutputStream高级流,并把对象写入OutputStream
var stream = new ObjectOutputStream(new FileOutputStream("st.dat"))
直接写入st就行,,然后它默认创建在项目中 ,最后对象就保存在文件中
stream.writeObject(st);
5,读取对象文件中的内容
ObjectInputStream读取文件对象ObjectOutputStream写入文件对象
所以直接地区OutputStream里面文件的内容
try (var stream = new ObjectInputStream( new FileInputStream("st.dat"))){
}catch(Exception e){
e.printStackTrace();
}
将读物的内容赋予Student类,因为对象类型为Student,所以阔以直接强转
输出读取结果
System.out.println(sr);
输出读取的id
System.out.println(sr.getId());
输出读取的name
System.out.println(sr.getName());
输出读取的age
System.out.println(sr.getAge());
读出结果
整体代码
Student
/*
* Copyright (c) 2020, 2023.
*
*/
import lombok.*;
import java.io.Serial;
import java.io.Serializable;
/**
* <p>Project: File - Object</p>
* <p>Powered by Cyy On 2023-07-24 15:44:14</p>
* <p>描述:<p>
*
* @author Cyy [210585265@qq.com]
* @version 1.0
* @since 17
*/
public class Student implements Serializable {
@Serial
private static final long serialVersionUID = -1860938135581020148L;
private int id;
private String name;
private int age;
public Student() {
}
public Student(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
ObjectIn
/*
* Copyright (c) 2020, 2023.
*
*/
import java.io.*;
/**
* <p>Project: File - Object</p>
* <p>Powered by Cyy On 2023-07-24 15:44:14</p>
* <p>描述:<p>
*
* @author Cyy [210585265@qq.com]
* @version 1.0
* @since 17
*/
public class ObjectIn {
public static void main(String[] args) {
Student st = new Student(1,"张三",22);
System.out.println(st);
//将对象保存到文件
// ObjectOutputStream 流用保存实现 implements Serializable
try(var stream = new ObjectOutputStream(new FileOutputStream("st.dat"))){
stream.writeObject(st);
}catch(Exception e){
e.printStackTrace();
}
//从文件中读取java对象
try (var stream = new ObjectInputStream( new FileInputStream("st.dat"))){
Student sr= (Student) stream.readObject();
System.out.println(sr);
System.out.println(sr.getId());
System.out.println(sr.getName());
System.out.println(sr.getAge());
}catch(Exception e){
e.printStackTrace();
}
}
}