假设我有一个Person类,我使用ObjectInputStream
和ObjectOutputStream
使用FileInputStream
和FileOutputStream
来读取和写入文件对象。
如果我有类Person的各种对象,例如 person1 , person2 , person3
我用
writeObject(person1)
writeObject(person2)
writeObject(person3)
当我这样做时
Person p1 = (Person) in.readObject()
p1 是否等于 person1 或 person3 ?换句话说,readObject
是否遵循堆栈或队列行为。它是按照它们写入的顺序读取对象还是以相反的顺序读取它们?
答案 0 :(得分:0)
p1是否等于person1或person3?换句话说,是吗 readObject遵循堆栈或队列行为。它读了吗? 对象按照它们的编写顺序或者在它中读取它们 逆序?
readObject()
方法从ObjectInputStream中读取一个对象,其顺序与写入流的顺序相同。因此,在您的情况下,p1
将等于person1。这是一个例子
import java.io.*;
public class Example {
static class Person implements Serializable {
String name;
public Person(String name) {
this.name = name;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
'}';
}
}
public static void main(String[] args) {
Person person1 = new Person("Adam");
Person person2 = new Person("John");
try {
FileOutputStream out = new FileOutputStream("test.txt");
ObjectOutputStream oout = new ObjectOutputStream(out);
oout.writeObject(person1);
oout.writeObject(person2);
oout.flush();
ObjectInputStream ois =
new ObjectInputStream(new FileInputStream("test.txt"));
System.out.println("" + ois.readObject());
System.out.println("" + ois.readObject());
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
输出
Person{name='Adam'}
Person{name='John'}
通过
写入对象的顺序oout.writeObject(person1);
oout.writeObject(person2);