JavaSE第8章ストリームとファイル-オブジェクトストリーム
1つは、ObjectOutputStreamクラスがオブジェクトのシリアル化を実現することです。つまり、オブジェクトをバイトストリームに書き込みます。このクラスは、OutputStreamのサブクラスです。このクラスは、ObjectOutputインターフェイスも実装します(オブジェクトのシリアル化をサポートします)。
该类的一个构造方法如下:
ObjectOutputStream(OutputStream OutStream)はIOExceptionをスロー
します。その中で、パラメーターOutStreamは、オブジェクトのシリアル化に書き込まれる出力ストリームです。
该类常用的方法及功能:
final void writeObject(Object object)呼び出し元ストリームにobjを書き込みます
void writeInt(int i)呼び出し元ストリームにintを書き込みます
void writeBytes(String str)呼び出し元ストリームにstrを表すバイトを書き込みます
void writeChar(int c)write a呼び出しストリームへのchar
次に、ObjectInputStreamクラスは、オブジェクトの逆シリアル化を実装します。つまり、バイトストリームからオブジェクトを読み取ります。このクラスはInputStreamのサブクラスです。このクラスは、ObjectInputインターフェイスも実装します(オブジェクトのシリアル化をサポートします)。このクラスの構築メソッドは次のとおりです
。ObjectInputStream(InputStream InputStream)はIOExceptionをスロー
します。その中で、パラメーターInputStreamは、オブジェクトのシリアル化に書き込まれる入力ストリームです。
该类常用的方法及功能:
最終オブジェクトreadObjectはストリームからオブジェクトを読み取りますintreadInt()はストリームから
32ビットのint値
を読み取りますString readUTF()はストリームからUTF-8形式の文字列を
読み取りますChar readChar()は16ビットのchar値を読み取ります
这是一个Person对象
public class Person implements Serializable{
private String idCard;
private String name;
private int age;
public Person(String idCard,String name,int age){
this.idCard=idCard;
this.name=name;
this.age=age;
}
//get和set方法省略
}
注:このPersonオブジェクトはSerializableインターフェースを実装します。このインターフェースはメソッドを定義せず、単にクラスをシリアル化できることを示します。クラスがシリアライズ可能である場合、そのすべてのサブクラスもシリアライズ可能です。
Serializableインターフェイスは次のように定義されています。
public interface Serializable{
}
例:ObjectOutputStreamを使用して、上記のPersonタイプのオブジェクトをファイル(d:\ Person.tmp)に書き込みます。
1)ObjectOutputStreamオブジェクトを作成します
2)Personオブジェクトを作成します
3)オブジェクトをファイルに書き込みます
4)最後にストリームを閉じます
package ch08;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
public class ObjectOutputStreamDemo {
public static void main(String[] args) {
ObjectOutputStream obs=null;
try{
obs=new ObjectOutputStream(new FileOutputStream("d:\\Person.tmp"));(1)
Person person=new Person("121001","张三",25);(2)
obs.writeObject(person);(3)
obs.flush();
}catch(Exception ex){
ex.printStackTrace();
}finally{
try{
if(obs!=null){
obs.close();(4)
}
}catch(Exception ex){
ex.printStackTrace();
}
}
}
}
例:ObjectInputStreamを使用して、ファイル(d:\ Person.tmp)からPersonタイプのオブジェクトを読み取ります。
1)ObjectInputStreamオブジェクトを作成します
2)オブジェクトを受け取ります
3)印刷します
4)ストリームを閉じます
package ch08;
import java.io.FileInputStream;
import java.io.ObjectInputStream;
public class ObjectInputStreamDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
ObjectInputStream ois=null;
try{
ois = new ObjectInputStream(new FileInputStream("d:\\Person.tmp"));(1)
Object obj=ois.readObject();(2)
if(obj!=null){
Person person=(Person)obj;
System.out.println("编号:"+person.getIdCard()(3)
+"姓名:"+person.getName()
+"年龄:"+person.getAge());
}
}catch(Exception ex){
ex.printStackTrace();
}finally{
try{
if(ois!=null){
ois.close();(4)
}
}catch(Exception ex){
ex.printStackTrace();
}
}
}
}
効果画像: