📅  最后修改于: 2023-12-03 15:15:56.280000             🧑  作者: Mango
Java IO 对象流(Field)是 Java IO 库中提供的一种特殊的流,可以将对象序列化为字节流并保存在文件中,也可以将字节流反序列化为对象。
Java 中的对象流字段由 ObjectOutputStream 类和 ObjectInputStream 类提供。正如其名称所示,ObjectOutputStream 类可以将一个对象序列化为字节流并保存到文件中,而 ObjectInputStream 类可以将字节流反序列化为对象。
对象流字段主要用于在网络和磁盘等外部设备中存储对象和数据。Java 应用程序使用对象流字段可以将一个 Java 对象进行序列化,并将其存储到文件中。在需要时,程序可以读取文件并将序列化的流转换回 Java 对象。
要使用对象流字段将 Java 对象保存到文件中,请执行以下步骤:
反过来,将对象流反序列化为 Java 对象,请执行以下步骤:
下面是一个简单的 Java 代码示例,用于将一个 Java 对象保存到文件中,并将其读取回来:
import java.io.*;
public class ObjectStreamExample {
public static void main(String[] args) {
// Serialize object to file
try(ObjectOutputStream oos =
new ObjectOutputStream(new FileOutputStream("test.dat"))) {
Person person = new Person("Tom", 30);
oos.writeObject(person);
} catch(IOException ex) {
System.err.println(ex);
}
// Deserialize object from file
try(ObjectInputStream ois =
new ObjectInputStream(new FileInputStream("test.dat"))) {
Person person = (Person) ois.readObject();
System.out.println(person);
} catch(IOException | ClassNotFoundException ex) {
System.err.println(ex);
}
}
}
class Person implements java.io.Serializable {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
以下是一些需要注意的事项:
以下是 ObjectOutputStream 和 ObjectInputStream 类常用的方法:
| 方法 | 描述 | | ----------------- | ------------------------------------------------------------ | | writeObject(Object obj) | 将给定的对象写入 ObjectStream。需要注意的是,对象必须实现 java.io.Serializable 接口。 | | writeInt(int v) | 将一个 int 值写入 ObjectStream | | writeDouble(double v) | 将一个 double 值写入 ObjectStream | | writeChars(String s) | 将一个字符串写入 ObjectStream | | writeBytes(String s) | 将一个字节数组写入 ObjectStream |
| 方法 | 描述 | | --------------------- | ------------------------------------------------------------ | | readObject() | 从 ObjectStream 中读取一个对象。需要注意的是,反序列化的过程和序列化的过程使用的是同一个对象类型 | | readInt() | 从 ObjectStream 中读取一个 int 值 | | readDouble() | 从 ObjectStream 中读取一个 double 值 | | readChar() | 从 ObjectStream 中读取一个字符值 | | readUTF() | 从 ObjectStream 中读取一个字符串值 | | readBoolean() | 从 ObjectStream 中读取一个布尔值 |
Java IO 对象流字段提供了一种将 Java 对象序列化为字节流并将其保存到文件中的方法,也可以将字节流反序列化为 Java 对象。使用对象流字段,可以在网络和磁盘等外部设备中存储对象和数据。使用 ObjectOutputStream 和 ObjectInputStream 类,可以将 Java 对象写入文件并从文件中读取 Java 对象。需要注意的是,在序列化和反序列化过程中需要一些注意事项,例如对象必须实现 java.io.Serializable 接口。