Javaの分析のシリアライズとデシリアライズ

記事のディレクトリを読みます

まず、シリアライズとデシリアライズするものである
第二に、中にシリアライズとデシリアライズ大きな役割
シリアライズとデシリアライズを達成するための3つの前提条件
シリアライズとデシリアライズを実装する方法第四に、
V.コードの実装
上の注意

まず、シリアライズとデシリアライズは何ですか

Javaの直列(シリアル):バイトのJavaオブジェクトのシーケンスを変換します

Javaの直列化復元(アンチシリアライズ):メモリのプロセスにおけるバイトのシーケンスにより、新しいJavaオブジェクト。

このバイトシーケンスが含まれています。オブジェクトの型情報を、オブジェクトデータおよびオブジェクトタイプデータ。

第二に、シリアライズとデシリアライズ主要な役割

ハードディスクに保存された1バイトは、(永続化)、一般的にファイルに書き込まれます。

2バイトのシーケンスは、ネットワーク上のオブジェクトを転送し、

第三に、シリアライズとデシリアライズの前提条件を達成するために

成功するためには、クラスのオブジェクトのシリアル化は、2つの条件が満たされる必要があります。

1. java.io.Serializableを実装する
クラス2のすべての属性がシリアライズ可能である必要があります。プロパティは、シリアライズされていない場合、プロパティは(過渡マークする必要があり、過渡)。

第四に、シリアライズとデシリアライズを実装する方法

方法を含み、シリアル化されたオブジェクトをデシリアライズするObjectInputStream ObjectOutputStreamのクラスとハイレベル・データ・ストリーム、。
1.ObjectOutputStreamクラス:のwriteObject(オブジェクトx)のための方法使用してシリアル化

公共の 最終 ボイドのwriteObject(オブジェクトX)がスロー IOExceptionが

2.ObjectInputStreamカテゴリ:オブジェクトのreadObject()メソッドを使用してデシリアライズします

公共の 最後のオブジェクトのreadObject()がスローにIOException、ClassNotFoundExceptionが

第五に、コードの実装

従業員のエンティティクラス(Employee.java)

1つの パッケージcom.cdh。
2  
3  / ** 
4  * @author chudonghai
 5  * @editor
 6  * @date 2019年9月23日下午2時16分27秒
 7  * @versionのv1.0を
 8  * @since 1.0
 9  * @ClassName社員
 10  * @説明雇员类
 11   * / 
12  パブリック クラス従業員が実装java.io.Serializableの
 13を 
14  {
 15      / ** 
16       *生成されたシリアルバージョンID
 17       * /
18である     プライベート 静的 最終的な ロングのserialVersionUID = -4308926516970571240L ;
 19。 
20れる     パブリックストリング名;
 21は、     パブリック文字列のアドレス、
 22は     公衆 過渡 INT SSN;
 23は、     公共 int型の数;
 24  
25      / ** 
26は、      *説明:この方法の目的は、純粋のために、書くことですクラスは、より完全な無他の目的にしましょう。絡まないでください。
27       * * / 
28      公共 ボイドMAILCHECK(){
 29          のSystem.out.printlnは(+名+ "" + "Aメーリングリストにチェック" アドレス);
 30      }
31 }

デモを達成連載:

1つの 用のパッケージ変更com.cdh;
 2  / ** 
3  * @author chudonghai
 4  * @editor
 5  * @date 2019インディアン9 23午後午前2時29分01秒
 6  * @version  
7  * @since  
8  * @ClassName SerializationDemo
 9  * @descriptionシリアライゼーションデモ達成
 10  * / 
11。 インポート java.io. * ;
 12は 
13である パブリック クラスSerializationDemo
 14  {
 15     公共 静的 ボイドメイン(文字列[]引数)
 16     {
 17。       従業員の電子= 新しい従業員();
18        = "chudonghai" e.name 19        = "北京" e.address 20        e.SSN = 999999999 21        e.number = 101 図22は、       お試し
23        {
 24           のFileOutputStream fileOut =
 25           たFileOutputStream( "E://aaa//employee.serを" )。
26           ObjectOutputStreamのアウト= 新しいObjectOutputStreamの(fileOut)。
27           out.writeObject(E);
28           out.close()。
29          fileOut.close();
30           System.out.printf( "直列化データをEに保存されている:/aaa/employee.ser" )。
31        } キャッチ(例外:IOException I)
 32        {
 33            i.printStackTrace()。
34        }
 35     }
 36 }

デモを達成デシリアライズ:

1つの 用のパッケージ変更com.cdh;
 2  / ** 
3  * @author chudonghai
 4  * @editor 
 5  * @date 2019インディアン9 23日午後2時29分58秒
 6  * @version  
7  * @since  
8  * @ClassName DeserializationDemo
 9  * @descriptionデモ達成デシリアライズ
 10  / *を
11。 インポート java.io. * ;
 12は 
13である パブリック クラスDeserializationDemo
 14  {
 15     公共 静的 ボイドメイン(文字列[]引数)
 16     {
17        従業員E = NULL ;
18        試みる
19        {
 20           のFileInputStream fileIn = 新規のFileInputStream( "E://aaa//employee.ser" )。
21           =でObjectInputStreamの新しいObjectInputStreamの(fileIn)。
22           、E = (従業員)in.readObject();
23           in.close()。
24           fileIn.close()。
25        } キャッチ(例外:IOException I)
 26        {
 27           i.printStackTrace()。
28           リターン;
29        }キャッチ(ClassNotFoundExceptionがCの)
 30        {
 31           のSystem.out.println( "Employeeクラスが見つかりません" )。
32           c.printStackTrace()。
33           リターン;
34        }
 35        のSystem.out.println( "非直列化従業員..." )。
36        のSystem.out.println( "名:" + e.name)。
37        のSystem.out.println( "住所:" + e.address)。
38        のSystem.out.println( "SSN:" + e.SSN)。
39        のSystem.out.println( "番号:" + e.number)。
 

注意点

詳細なオブジェクトはreadObjectメソッドを使用し変換する必要があります。

デシリアライズは、前世代のシーケンスは、ファイルを見つけることができない場合、それはにClassNotFoundに報告されます。

 

おすすめ

転載: www.cnblogs.com/chudonghai/p/11573880.html