このチュートリアルに従って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 ブロックの内容を次のように変更します...
while(true){
try{
System.out.println(ois.readByte());
} catch(EOFException eofe){
eofe.printStackTrace();
break;
}
}
しかし、これは即座に EOFException をスローします。私が間違っていることはありますか?