我正在按照本教程学习 Java 序列化。我已经使用以下代码从序列化文件中成功读取并使用了我的对象(省略了导入):
public class SimpleSerializationTest {
static class Person implements Serializable{
String name;
int age;
boolean isMale;
static final long serialVersionUID = 314L;
}
public static void main(String[] args) throws Exception{
Person p = new Person();
p.name = "Mark";
p.age = 20;
p.isMale = true;
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("mark.ser"));
try{
oos.writeObject(p);
} catch(IOException ioe){
ioe.printStackTrace();
} finally{
oos.close();
}
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("mark.ser"));
try{
// NOTE: Will change this later!
Person mark = (Person) ois.readObject();
System.out.println(mark.name);
} catch(IOException ioe){
ioe.printStackTrace();
} finally{
ois.close();
}
}
}
但是,我序列化对象的主要目的是为了将其推送到 Redis 存储。所以,为此,我不需要它们以对象形式,而是以字节形式。所以我将最后一个 try-block 的内容更改为...
while(true){
try{
System.out.println(ois.readByte());
} catch(EOFException eofe){
eofe.printStackTrace();
break;
}
}
但这会立即引发 EOFException。有什么我做错了吗?