JavaSE第8章ストリームとファイル-オブジェクトストリーム

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();2if(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();
			}
		}
	}
}

効果画像:
ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/qq_45618376/article/details/111340954