IOストリーム(下)

まず、オブジェクトフロー:

①オブジェクトの直列化メカニズムはどのようなものです:

  • オブジェクトのシリアル化メカニズムは、メモリは、それによって別のネットワークノードへのネットワークを介して恒久的にディスク上に格納されるバイナリストリーム、バイナリ、またはストリーミングを可能にする、バイナリストリームに、プラットフォームに依存しないJavaオブジェクトを変換することを可能にします。//他のバイナリストリームは、元のJavaオブジェクトに復元することができたときに、このプログラムの入手方法

 

  • シリアル化の利点は、直列化インタフェースは、データのバイトに変換する実装する任意のオブジェクトは、それが送信中に保存して復元することができることです

 

 

  • プロセスパラメータと戻り値のメカニズム達成しなければならない、とRMIは、JavaEEのの基礎である - 直列化は、RMI(Remote Method Invocation、リモートメソッド呼び出しリモートメソッド呼び出し)があります。したがって、直列化機構は、プラットフォームのJavaEEの基本であります

 

 

  • あなたがオブジェクトを作成する必要がある場合は直列化メカニズムをサポートしている、あなたはクラスを聞かせなければなりませんし、そのプロパティは、オブジェクトの直列化可能です属し、クラスがシリアル化されることを可能にするために、クラスには、次の2つのいずれかのインタフェースを実装する必要があります。それ以外の場合は、例外がスローされます持つNotSerializableException

 

  1. Serializableを

  2. 外部化

  • Serializableインタフェースのクラスを実現する人々は、静的変数は、識別子のシリアル化されたバージョンを表しています
  1. プライベート静的最終長いserialVersionUIDを。

  2. serialVersionUIDのクラスの異なるバージョン間の互換性を示すために使用されます。要するに、その目的は、各バージョンについてデシリアライズときにバージョン管理が互換性のあるオブジェクトをシリアル化することです。

  3. クラスは、値が自動的に生成されたクラスに応じて、Javaランタイム環境の内部の詳細である静的定数を定義しない場合。クラスのインスタンス変数が変更されている場合は、serialVersionUIDのは、変更されることがあります。明示的に宣言、提案されています。

  4.  要するに、Javaの直列化メカニズムは、整合性を検証するために、ランタイムバージョンのserialVersionUIDでクラスを決定することです。直列化復元時には、JVMが比較され、それぞれのローカルエンティティクラスとバイトストリームのserialVersionUIDのserialVersionUIDが来ますが、そうでない場合はシリアル化されたバージョンが存在します、同じデシリアライズすることができた場合に一貫性があると考えられています一貫性のない例外。(InvalidCastExceptionが)

 

②直列化と使用のデシリアライズ:

  • クラスはSerializableインタフェースを実装する場合、このクラスのオブジェクトは直列化可能です。
  1. ObjectOutputStreamの作成

  2. 出力シリアライズオブジェクトにObjectOutputStreamのオブジェクトのwriteObject(Object)メソッドを呼び出します

  3. 1回)(ノート、運転フラッシュを書きます

  • デシリアライズ
  1. ObjectInputStreamの作成

  2. readObjectメソッドを呼び出します()メソッドは、オブジェクトストリームを読み込みます

  • 彼は強調した:クラスの場合は属性はプリミティブデータ型またはString型ではないが、別の参照型は、その後、参照型をシリアル化する必要があり、さもなければ持つフィールドクラスのこのタイプはシリアライズすることはできません。そして、同じことが静的および過渡メンバ変数の順序を変更することはできません。

 

第二に、ランダムアクセスファイルストリーム:

①RandomAccessFileの使用:

  1. RandomAccessFileの直接インタフェースDataInputとDataOutputのインターフェイスを実装java.lang.Objectクラスから継承されました。

  2. 入力ストリームとして、だけでなく、出力ストリームとしてのいずれかのRandomAccessFile。

  3. 出力ストリームとしてのRandomAccessFileは、ファイルに書き込む場合は存在しない、自動的に実装プロセスで作成された場合に存在するファイルに書き出されている場合、それは元のファイルの内容を上書きします。(デフォルトでは、最初からカバー)

  4. 関連操作のRandomAccessFile「挿入」データの効果を得ることができます。(主パラメータは角度位置決め目標位置を指定し、ポインタのような方法の行為を求めます)。

②RandomAccessFile構造:

  • コンストラクタ
  1. 公共のRandomAccessFile(ファイルのファイル、文字列モード)

  2. 公共のRandomAccessFile(文字列名、文字列モード)

  • RandomAccessFileのアクセスモードを指定するモードパラメータを指定する必要がRandomAccessFileのクラスのインスタンスを作成します。
  1. R:オープン読み取り専用

  2. RW:読み取りおよび書き込み用にオープン

  3. RWD:読み取りおよび書き込み用にオープン、ファイル同期の内容を更新

  4. RWS:読み取りと書き込みのためにオープン、同期アップデートファイルのコンテンツとメタデータ

  • 読み取り専用モードRの場合。ファイルが存在しない読まれている場合、ファイルが作成されていませんが、すでに存在するファイルを読むために行くだろう、と、例外が発生します。モードがある場合はRWの読み書き。ファイルが存在しない場合はそこが作成されていない場合は、ファイルを作成することになります。

 

おすすめ

転載: www.cnblogs.com/liuhuan425/p/10948911.html