二つのストリームクラスオブジェクト:
ObjectOutputStreamの:OutputStreamを書かれた基本的なデータJavaオブジェクトの種類とグラフィックス
ObjectInputStreamの:基本データと以前にデシリアライズさにObjectOutputStreamを使って書かれたオブジェクト
オブジェクトのセットのシーケンス:
直列運転では、複数のオブジェクトを同時にシリアライズするとき、それがどのように動作し、あなたがオブジェクトのセットをシリアル化したい場合は、順番に動作しなければならず、デシリアライズ?
オブジェクト配列オブジェクトに動作を移行することができるので、オブジェクトの組の配列は、オブジェクトの配列の形態をとることができます。
ファイルへの標的配列、ファイルをバイト単位で格納されません。属性を関連付けられているオブジェクトのような私たちは、ファイルにシリアライズと呼ばれるプロセスを書き込まれたバイトの換算値
デシリアライズのプロセス:ドキュメントオブジェクトのプロパティなどは、バイトのスワップオブジェクトを読み出します
transicentキーワード:
一時的なインスタンス変数は、オブジェクトが格納されている場合、宣言した場合は、その値の必要性が維持されません。
Dog.java:
以下のためのパッケージ変更。IODemo インポートしたjava.io.Serializable; / ** あなたがシリアル化するクラスオブジェクトのニーズを作成する場合は、クラスがSerializableインタフェースを実装する必要があります することができJVMオブジェクトを伝えるために、クラスのない定義はありません、シリアライズはマーカーインターフェイスです*直列化 オブジェクトは、それをシリアル化する必要がありますか*? * 1、オブジェクトが(物理媒体に格納されている)ファイルに保存され * 2、ネットワーク・オブジェクトを介して送信される必要がある * / // シリアライゼーションなしで送信されるオブジェクト(直列化)、エラーがjava.io.NotSerializableException意志 公共 クラス犬は 実装し、シリアライズ{ プライベート文字列名; プライベート int型の年齢; プライベート文字列のセックス; // プライベート過渡のint型のID; transientキーワード、説明書をシリアル化する値が無視できる場合には 、パブリック・ドッグ(文字列名を、int型年齢、文字列の性別){ この .nameの= 名前; この .age = 年齢; この .sex = セックス。 } パブリック犬(){ } パブリック文字列のgetName(){ 戻り名。 } 公共 ボイドのsetName(文字列名){ この .nameの= 名前。 } 公共 INT getAge(){ 戻り年齢; } 公共 ボイド setAge(int型の年齢){ この .age = 年齢。 } 公共の文字列getSex(){ 戻り値のセックス; } 公共 ボイドsetSex(文字列性別){ この .sex = セックス。 } @Override 公共の文字列のtoString(){ リターン "犬{" + "名= '" +名+ '\'' + "年齢=" +年齢+ "性別= '" +性別+ '\'' + 「}」。 } }
ObjectStreamDemo.java:
パッケージIODemo;
インポートjava.io. * ;
/ **
*伝送が複数のオブジェクトのオブジェクト配列を使用する場合。内部に予め存在して、トラバース読んでください!
*
* /
パブリッククラスObjectStreamDemo {
プライベート静的な無効ObjectRead(){ ファイルファイル=新しい新しいファイル( "D:\\ \\ TEST.OBJテスト"); //任意の拡張セット のtry { でのInputStream =新しい新しいFileInputStreamを(ファイル) ; OIS =新しい新しいObjectInputStreamのObjectInputStreamの(に);犬犬= (犬)ois.readObject();のSystem.out.println(dog.toString()); ois.close();}キャッチ(にFileNotFoundException E){E. printStackTrace();}キャッチ(IOExceptionをE){e.printStackTrace();}キャッチ(ClassNotFoundExceptionが電子){e.printStackTrace(); }}プライベート静的ボイドObjectWrite(){犬の犬=新しい犬( "旺旺"、2、 "公" )。ファイルファイル=新しいファイル( "D:\\テスト\\ test.objです"); //扩展名随意定試し{OutputStreamのOS =新たFileOutputStream(ファイル); ObjectOutputStreamのOOS =新しいObjectOutputStreamの(OS); oos.writeObject(犬); oos.close(); }キャッチ(IOExceptionを電子){e.printStackTrace(); ボイド}}パブリック静的メイン(文字列[]引数){ObjectWrite()。ObjectRead(); }}