モジュール java.base
パッケージ java.io

クラスObjectOutputStream

java.lang.Object
java.io.OutputStream
java.io.ObjectOutputStream
すべての実装されたインタフェース:
Closeable, DataOutput, Flushable, ObjectOutput, ObjectStreamConstants, AutoCloseable

public class ObjectOutputStream
extends OutputStream
implements ObjectOutput, ObjectStreamConstants
ObjectOutputStreamは、プリミティブ・データ型とJavaオブジェクトのグラフをOutputStreamに書き込みます。 これらのオブジェクトを読み込む(再構築する)にはObjectInputStreamを使います。 オブジェクトの持続的記憶は、そのストリームのためのファイルを使えば可能です。 ストリームがネットワーク・ソケット・ストリームの場合は、ほかのホストやほかのプロセス上でオブジェクトを再構築することもできます。

ストリームに書き込めるのはjava.io.Serializableインタフェースをサポートするオブジェクトだけです。 各直列化可能オブジェクトのクラスは、クラスの名前とシグネチャ、オブジェクトのフィールドと配列、および初期オブジェクトから参照されるほかのすべてのオブジェクトのクロージャを含めてコード化されます。

オブジェクトをストリームに書き込むにはwriteObjectメソッドを使います。 Stringや配列を含む任意のオブジェクトがwriteObjectによって書き込まれます。 複数のオブジェクトまたはプリミティブも、ストリームへの書込みが可能です。 オブジェクトを読み込むときは、対応するObjectInputstreamから同じ型として、かつ書き込まれたときと同じ順序で読み込まなければいけません。

プリミティブ・データ型をストリームに書き込むには、DataOutputの適切なメソッドを使います。 Stringを書き込む場合はwriteUTFメソッドを使います。

オブジェクトのデフォルトの直列化メカニズムは、オブジェクトのクラス、クラスのシグネチャ、およびすべての非transientおよび非staticフィールドの値を書き込みます。 ほかのオブジェクトへの参照(transientおよびstaticフィールドは除く)があれば、これらのオブジェクトも書き込まれます。 単一オブジェクトへの多重参照は参照共有メカニズムによりエンコードされ、オブジェクトのグラフを、オリジナルが書き込まれたときの形状に復元することができます。

たとえば、ObjectInputStreamの例で読み込めるようにオブジェクトを書き込むには、次のようにします。

      FileOutputStream fos = new FileOutputStream("t.tmp");
      ObjectOutputStream oos = new ObjectOutputStream(fos);

      oos.writeInt(12345);
      oos.writeObject("Today");
      oos.writeObject(new Date());

      oos.close();
 

直列化と直列化復元の際に特殊な扱いが必要なクラスでは、正確に次のようなシグネチャを持つ特殊なメソッドを実装する必要があります。

 private void readObject(java.io.ObjectInputStream stream)
     throws IOException, ClassNotFoundException;
 private void writeObject(java.io.ObjectOutputStream stream)
     throws IOException
 private void readObjectNoData()
     throws ObjectStreamException;
 

writeObjectメソッドは、その特定のクラスのオブジェクトの状態を書き込んで、対応するreadObjectメソッドがオブジェクトの状態を復元できるようにする役割を担います。 このメソッドは、オブジェクトのスーパー・クラスやサブクラスに属する状態に関与する必要はありません。 状態を保存するには、writeObjectメソッドを使って個々のフィールドをObjectOutputStreamに書き込むか、またはDataOutputがサポートするプリミティブ・データ型用のメソッドを使用します。

直列化では、java.io.Serializableインタフェースを実装しないオブジェクトのフィールドは書き込みません。 直列化可能でないオブジェクトのサブクラスを直列化可能にすることができます。 この場合、直列化可能でないクラスは、そのフィールドを初期化できるようにするため、引数なしのコンストラクタを持つ必要があります。 この場合、直列化可能でないクラスの状態を保存および復元するのは、サブクラスの責任になります。 そのクラスのフィールドがアクセス可能である(public、package、またはprotected)場合、あるいは状態の復元に利用できるsetメソッドやgetメソッドがある場合がしばしばあります。

writeObjectおよびreadObjectメソッドでNotSerializableExceptionをスローするように実装しておくと、オブジェクトの直列化を防止できます。 例外がObjectOutputStreamにキャッチされ、直列化処理が異常終了します。

Externalizableインタフェースを実装すると、オブジェクトの直列化された形式の内容および形式をオブジェクト側が完全に制御することが可能になります。 ExternalizableインタフェースのメソッドであるwriteExternalとreadExternalは、オブジェクトの状態を保存および復元するために呼び出されます。 これらのメソッドは、クラスによって実装された場合には、ObjectOutputとObjectInputのすべてのメソッドを使って、自身の状態の書き込みおよび読込みを行うことができます。 どのようなバージョンであっても処理できるようにするのは、オブジェクトの責任です。

enum定数の直列化は、通常の直列化可能または外部化可能オブジェクトとは異なります。 enum定数の直列化された形式を構成するのは、その名前だけです。定数のフィールド値は転送されません。 enum定数を直列化するには、その定数のnameメソッドによって返される文字列をObjectOutputStreamで書き込みます。 他の直列化可能または外部化可能オブジェクトと同様に、enum定数は直列化ストリームにその後出現する後方参照のターゲットとして機能できます。 enum定数を直列化するプロセスをカスタマイズすることはできません。enum型で定義された、クラス固有のwriteObjectメソッドおよびwriteReplaceメソッドは、直列化復元の間は無視されます。 同様に、serialPersistentFieldsまたはserialVersionUIDのフィールド宣言もすべて無視されます。すべてのenum型は0Lで固定されたserialVersionUIDを持ちます。

直列化可能フィールドおよび外部化可能データを除くプリミティブ・データは、ブロック・データ・レコードとしてObjectOutputStreamに書き込まれます。 ブロック・データ・レコードは、ヘッダーとデータで構成されます。 ブロック・データのヘッダーは、マーカーおよびヘッダーに続くバイト数で構成されます。 連続するプリミティブ・データの書込みは、1つのブロック・データ・レコードにマージされます。 ブロック・データ・レコードに使用されるブロック係数は1024バイトです。 各ブロック・データ・レコードは、1024バイトまで埋め込まれるか、ブロック・データ・モードの終了まで書き込まれます。 ObjectOutputStreamのメソッドwriteObject、defaultWriteObject、およびwriteFieldsを呼び出すと、最初に既存のブロック・データ・レコードが終了されます。

実装要件:
レコードの直列化は、通常の直列化可能オブジェクトまたは外部化可能オブジェクトとは異なります。「レコード直列化」を参照してください。
導入されたバージョン:
1.1
関連項目:
DataOutput, ObjectInputStream, Serializable, Externalizable, 「オブジェクト直列化仕様」のセクション2「オブジェクト出力クラス」
  • ネストされたクラスのサマリー

    ネストされたクラス 
    修飾子と型 クラス 説明
    static class  ObjectOutputStream.PutField
    ObjectOutputに書き込まれる持続フィールドへのプログラムによるアクセスを提供します。
  • フィールドのサマリー

  • コンストラクタのサマリー

    コンストラクタ 
    修飾子 コンストラクタ 説明
    protected ObjectOutputStream()
    ObjectOutputStreamを完全に実装し直すサブクラスが、ObjectOutputStreamのこの実装によって使用されたばかりのprivateデータを割り当てる必要がないようにする手段を提供します。
      ObjectOutputStream​(OutputStream out)
    指定されたOutputStreamに書き込むObjectOutputStreamを作成します。
  • メソッドのサマリー

    修飾子と型 メソッド 説明
    protected void annotateClass​(Class<?> cl)
    サブクラスは、このメソッドを実装して、クラスのデータをストリームに保存できるようにすることができます。
    protected void annotateProxyClass​(Class<?> cl)
    サブクラスはこのメソッドを実装して、ダイナミック・プロキシ・クラスに対する記述子とともにカスタム・データをストリームに格納します。
    void close()
    ストリームを閉じます。
    void defaultWriteObject()
    現在のクラスの非staticおよび非transientのフィールドを、このストリームに書き込みます。
    protected void drain()
    ObjectOutputStream内のバッファリングされているデータをすべて排出します。
    protected boolean enableReplaceObject​(boolean enable)
    ストリームがストリームに書き込まれたオブジェクトの置換を行うことを可能にします。
    void flush()
    ストリームをフラッシュします。
    ObjectOutputStream.PutField putFields()
    ストリームに書き込まれる持続フィールドをバッファに格納するために使用されるオブジェクトを取得します。
    protected Object replaceObject​(Object obj)
    このメソッドは、直列化の際に、ObjectOutputStreamの信頼できるサブクラスが、あるオブジェクトをほかのオブジェクトに置換できるようにします。
    void reset()
    Resetは、ストリームにすでに書き込まれているオブジェクトの状態を無効にします。
    void useProtocolVersion​(int version)
    ストリームの書込み時に使用するストリーム・プロトコルのバージョンを指定します。
    void write​(byte[] buf)
    バイト配列を書き込みます。
    void write​(byte[] buf, int off, int len)
    バイト配列の一部を書き込みます。
    void write​(int val)
    バイトを書き込みます。
    void writeBoolean​(boolean val)
    booleanを書き込みます。
    void writeByte​(int val)
    8ビットのバイトを書き込みます。
    void writeBytes​(String str)
    Stringをバイトの列として書き込みます。
    void writeChar​(int val)
    16ビットのcharを書き込みます。
    void writeChars​(String str)
    Stringをcharの列として書き込みます。
    protected void writeClassDescriptor​(ObjectStreamClass desc)
    指定されたクラス記述子をObjectOutputStreamに書き込みます。
    void writeDouble​(double val)
    64ビットのdoubleを書き込みます。
    void writeFields()
    バッファに格納されたフィールドをストリームに書き込みます。
    void writeFloat​(float val)
    32ビットのfloatを書き込みます。
    void writeInt​(int val)
    32ビットのintを書き込みます。
    void writeLong​(long val)
    64ビットのlongを書き込みます。
    void writeObject​(Object obj)
    指定されたオブジェクトをObjectOutputStreamに書き込みます。
    protected void writeObjectOverride​(Object obj)
    サブクラスがデフォルトのwriteObjectメソッドをオーバーライドするために使用するメソッドです。
    void writeShort​(int val)
    16ビットのshortを書き込みます。
    protected void writeStreamHeader()
    サブクラスが自身のヘッダーをストリームの前または後ろに追加できるように提供されています。
    void writeUnshared​(Object obj)
    ObjectOutputStreamに「共有されない」オブジェクトを書き込みます。
    void writeUTF​(String str)
    このStringのプリミティブ・データを修正UTF-8形式で書き込みます。

    クラス java.io.OutputStreamで宣言されたメソッド

    nullOutputStream

    クラス java.lang.Objectで宣言されたメソッド

    cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait
  • コンストラクタの詳細

    • ObjectOutputStream

      public ObjectOutputStream​(OutputStream out) throws IOException
      指定されたOutputStreamに書き込むObjectOutputStreamを作成します。 このコンストラクタは、直列化ストリーム・ヘッダーをベースとなるストリームに書き込みます。このストリームは呼出し側でただちにフラッシュしてください。ObjectInputStreamsを受け取ったコンストラクタは、ヘッダーを読み込むときにブロックするためです。

      セキュリティ・マネージャがインストールされている場合、ObjectOutputStream.putFieldsメソッドまたはObjectOutputStream.writeUnsharedメソッドをオーバーライドするサブクラスのコンストラクタによってSerializablePermission("enableSubclassImplementation")が直接または間接に呼び出されたときに、このコンストラクタはこのアクセス権を確認します。

      パラメータ:
      out - 書込み先の出力ストリーム
      例外:
      IOException - ストリーム・ヘッダーの書込み中に入出力エラーが発生した場合
      SecurityException - 信頼できないサブクラスが、セキュリティ上重要なメソッドを不正にオーバーライドした場合
      NullPointerException - outnullである場合
      導入されたバージョン:
      1.4
      関連項目:
      ObjectOutputStream(), putFields(), ObjectInputStream(InputStream)
    • ObjectOutputStream

      protected ObjectOutputStream() throws IOException, SecurityException
      ObjectOutputStreamを完全に実装し直すサブクラスが、ObjectOutputStreamのこの実装によって使用されたばかりのprivateデータを割り当てる必要がないようにする手段を提供します。

      セキュリティ・マネージャがインストールされている場合、このメソッドはまずセキュリティ・マネージャのcheckPermissionメソッドをアクセス権SerializablePermission("enableSubclassImplementation")で呼び出し、サブクラス化を有効にできるようにします。

      例外:
      SecurityException - セキュリティ・マネージャが存在し、そのcheckPermissionメソッドがサブクラス化を有効にすることを拒否した場合。
      IOException - このストリームの作成中に入出力エラーが発生した場合
      関連項目:
      SecurityManager.checkPermission(java.security.Permission)SerializablePermission
  • メソッドの詳細

    • useProtocolVersion

      public void useProtocolVersion​(int version) throws IOException
      ストリームの書込み時に使用するストリーム・プロトコルのバージョンを指定します。

      このルーチンは、現在のバージョンの直列化が、前のバージョンのストリーム形式と下位互換性のある形式で書き込めるようにするフックを提供します。

      下位互換性のない形式がさらに導入されるのを防ぐためにあらゆる努力が行われますが、選択の余地のない場合もあります。

      パラメータ:
      version - java.io.ObjectStreamConstantsからProtocolVersionを使用。
      例外:
      IllegalStateException - オブジェクトが直列化されたあとに呼び出された場合。
      IllegalArgumentException - 渡されたバージョンが無効な場合。
      IOException - 入出力エラーが発生した場合
      導入されたバージョン:
      1.2
      関連項目:
      ObjectStreamConstants.PROTOCOL_VERSION_1, ObjectStreamConstants.PROTOCOL_VERSION_2
    • writeObject

      public final void writeObject​(Object obj) throws IOException
      指定されたオブジェクトをObjectOutputStreamに書き込みます。 オブジェクトのクラス、クラスのシグネチャ、クラスの非transientフィールドおよび非staticフィールドの値とそのすべてのスーパー・タイプが書き込まれます。 あるクラスについてデフォルトの直列化は、writeObjectメソッドとreadObjectメソッドを使ってオーバーライドすることができます。 このオブジェクトによって参照されるオブジェクトは中間的に書き込まれ、それによって、完全に同等なオブジェクト・グラフがObjectInputStreamによって再構築されます。

      例外は、OutputStreamに関する問題や、直列化すべきではないクラスについてスローされます。 すべての例外は、OutputStreamにとって致命的で、OutputStreamを不確定な状態にします。ストリームの状態を無視するか回復処理するかを決めるのは呼出し側です。

      定義:
      writeObject、インタフェース: ObjectOutput
      パラメータ:
      obj - 書き込まれるオブジェクト
      例外:
      InvalidClassException - 直列化で使用されるクラスになんらかの不具合があった場合。
      NotSerializableException - 直列化の対象オブジェクトがjava.io.Serializableインタフェースを実装していない場合。
      IOException - ベースとなるOutputStreamが例外をスローした場合。
    • writeObjectOverride

      protected void writeObjectOverride​(Object obj) throws IOException
      サブクラスがデフォルトのwriteObjectメソッドをオーバーライドするために使用するメソッドです。 このメソッドは、引数なしのprotectedコンストラクタを使用して、ObjectOutputStreamを構築したObjectOutputStreamの信頼できるサブクラスによって呼び出されます。 サブクラスは、修飾子がfinalのオーバーライド・メソッドを提供するとみなされます。
      パラメータ:
      obj - ベースとなるストリームに書き込まれるオブジェクト
      例外:
      IOException - ベースとなるストリームの書込み中に入出力エラーが発生した場合
      導入されたバージョン:
      1.2
      関連項目:
      ObjectOutputStream(), writeObject(Object)
    • writeUnshared

      public void writeUnshared​(Object obj) throws IOException
      ObjectOutputStreamに「共有されない」オブジェクトを書き込みます。 このメソッドは、writeObjectと似ています。ただし、直列化されたインスタンスを指す逆参照としてではなく、ストリーム内で一意の新しいオブジェクトとして書き込みます。 具体的には、次のようになります。
      • writeUnsharedを使用して書き込まれたオブジェクトは、そのオブジェクトがストリームに書き込まれているかどうかにかかわらず、新しく書き込まれたオブジェクト(ストリームに書き込まれていないオブジェクト)として直列化されます。
      • writeUnsharedによって以前に書き込まれたオブジェクトを書き込む際にwriteObjectを使用すると、以前のwriteUnshared操作は、別のオブジェクトの書き込みとして扱われます。 つまり、ObjectOutputStreamは、writeUnsharedの呼出しによって書き込まれたオブジェクト・データへの後方参照を生成しません。
      writeUnsharedを介してオブジェクトを書き込むこと自体は、オブジェクトが直列化復元されたときにそのオブジェクトへの一意参照を保証するものではありませんが、1つのオブジェクトがストリーム内で複数回定義されることは可能になります。そのため、受け取り側がreadUnsharedを複数回呼び出しても衝突が生じません。 ここで説明したルールは、writeUnsharedによって書き込まれた基本レベルのオブジェクトだけに適用され、直列化されるオブジェクトのグラフ内で一時的に参照されるサブオブジェクトには一切適用されません。

      このメソッドをオーバーライドするObjectOutputStreamサブクラスは、SerializablePermission("enableSubclassImplementation")を持つセキュリティ・コンテキスト内だけで構築できます。このアクセス権を持たないセキュリティ・コンテキストでインスタンス化しようとすると、SecurityExceptionがスローされます。

      パラメータ:
      obj - ストリームに書き込むオブジェクト
      例外:
      NotSerializableException - 直列化するグラフ内のオブジェクトがSerializableインタフェースを実装していない場合
      InvalidClassException - 直列化するオブジェクトのクラスに問題がある場合
      IOException - 直列化中に入出力エラーが発生した場合
      導入されたバージョン:
      1.4
    • defaultWriteObject

      public void defaultWriteObject() throws IOException
      現在のクラスの非staticおよび非transientのフィールドを、このストリームに書き込みます。 このメソッドを呼び出すことができるのは、直列化が行われているクラスのwriteObjectメソッドだけです。 別の方法で呼び出された場合はNotActiveExceptionをスローします。
      例外:
      IOException - ベースとなるOutputStreamの書込み中に入出力エラーが発生した場合
    • putFields

      public ObjectOutputStream.PutField putFields() throws IOException
      ストリームに書き込まれる持続フィールドをバッファに格納するために使用されるオブジェクトを取得します。 フィールドは、writeFieldsメソッドが呼び出されたときにストリームに書き込まれます。
      戻り値:
      直列化可能フィールドを保持しているクラスPutfieldのインスタンス
      例外:
      IOException - 入出力エラーが発生した場合
      導入されたバージョン:
      1.2
    • writeFields

      public void writeFields() throws IOException
      バッファに格納されたフィールドをストリームに書き込みます。
      例外:
      IOException - ベースとなるストリームの書込み中に入出力エラーが発生した場合
      NotActiveException - オブジェクトの状態を書き込むためにクラスのwriteObjectメソッドが呼び出されなかったときに呼び出された場合。
      導入されたバージョン:
      1.2
    • reset

      public void reset() throws IOException
      Resetは、ストリームにすでに書き込まれているオブジェクトの状態を無効にします。 新しいObjectOutputStreamと同じ状態にリセットされます。 ストリームの現在位置にマークが設定され、対応するObjectInputStreamも同じ位置にリセットされます。 以前にストリームに書き込まれたオブジェクトは、すでにストリーム内にあるとは解釈されません。 これらのオブジェクトは、ストリームに再度書き込まれます。
      例外:
      IOException - オブジェクトを直列化中にreset()が呼び出された場合。
    • annotateClass

      protected void annotateClass​(Class<?> cl) throws IOException
      サブクラスは、このメソッドを実装して、クラスのデータをストリームに保存できるようにすることができます。 デフォルトではこのメソッドは何も行いません。 ObjectInputStream内で対応するメソッドはresolveClassです。 このメソッドは、ストリームの一意のクラスそれぞれについて1回だけ呼び出されます。 その時点でクラス名とシグネチャはすでにストリームに書き込まれています。 このメソッドは、ObjectOutputStreamを自由に使って、適切と判断したクラスの任意の表現(クラス・ファイルのバイトなど)を保存できます。 ObjectInputStreamの対応するサブクラスのresolveClassメソッドは、annotateClassによって書き込まれたデータやオブジェクトを読み込み、使用しなければいけません。
      パラメータ:
      cl - カスタム・データに注釈を付けるクラス
      例外:
      IOException - ベースとなるOutputStreamが例外をスローした場合。
    • annotateProxyClass

      protected void annotateProxyClass​(Class<?> cl) throws IOException
      サブクラスはこのメソッドを実装して、ダイナミック・プロキシ・クラスに対する記述子とともにカスタム・データをストリームに格納します。

      このメソッドはストリームの一意の各プロキシ・クラス記述子について1回だけ呼び出されます。 ObjectOutputStream内のこのメソッドのデフォルト実装は、何も実行しません。

      ObjectInputStream内で対応するメソッドはresolveProxyClassです。 このメソッドをオーバーライドするObjectOutputStreamの指定されたサブクラスについては、ObjectInputStream内の対応するサブクラスのresolveProxyClassメソッドが、annotateProxyClassが書き込むデータまたはオブジェクトをすべて読み取る必要があります。

      パラメータ:
      cl - カスタム・データに注釈を付けるプロキシ・クラス
      例外:
      IOException - ベースとなるOutputStreamが例外をスローした場合
      導入されたバージョン:
      1.3
      関連項目:
      ObjectInputStream.resolveProxyClass(String[])
    • replaceObject

      protected Object replaceObject​(Object obj) throws IOException
      このメソッドは、直列化の際に、ObjectOutputStreamの信頼できるサブクラスが、あるオブジェクトをほかのオブジェクトに置換できるようにします。 オブジェクトの置換は、enableReplaceObjectが呼び出されるまでは行えません。 enableReplaceObjectメソッドは、オブジェクトの置換を要求しているストリームが信頼できるかどうかを調べます。 直列化ストリームに書き込まれる各オブジェクトのうち最初に出現したものは、replaceObjectに渡されます。 それ以降のオブジェクトへの参照は、replaceObjectの元の呼出しによって返されたオブジェクトによって置換されます。 オブジェクトのprivate状態が意図せずに公開されることがないように、replaceObjectを使うのは信頼できるストリームに限定されます。

      ObjectOutputStream.writeObjectメソッドはObjectタイプのパラメータ(Serializableタイプとは異なる)を取り、直列化可能でないオブジェクトが直列化可能オブジェクトに置き換えられるようにします。

      サブクラスは、オブジェクトを置換するとき、直列化復元実行時に相補的な置換が行われるようにするか、または置換されたオブジェクトと、参照が格納される各フィールドとの互換性を保つようにする必要があります。 フィールドまたは配列要素の型のサブクラスではない型のオブジェクトは、例外を発生させることによって直列化を中断し、その結果オブジェクトは格納されません。

      このメソッドは、各オブジェクトが最初に検出されたときに1回だけ呼び出されます。 これ以後検出されるそのオブジェクトへの参照は、新しいオブジェクトにリダイレクトされます。 このメソッドは、置換されるオブジェクトまたは元のオブジェクトを返すことになります。

      置換されるオブジェクトとしてnullを返すこともできますが、オリジナル・オブジェクトへの参照を含むクラスでは、nullではなくオブジェクトが返されることを仮定しているものがあり、この場合はNullReferenceExceptionがスローされます。

      パラメータ:
      obj - 置き換えられるオブジェクト
      戻り値:
      指定されたオブジェクトと置き換えられた代替オブジェクト
      例外:
      IOException - ベースとなるOutputStreamが例外をスローした場合。
    • enableReplaceObject

      protected boolean enableReplaceObject​(boolean enable) throws SecurityException
      ストリームがストリームに書き込まれたオブジェクトの置換を行うことを可能にします。 有効にすると、replaceObject(java.lang.Object)メソッドが直列化されるすべてのオブジェクトに対して呼び出されます。

      オブジェクトの置換が現在有効ではなく、enableがtrueであり、セキュリティ・マネージャがインストールされている場合、このメソッドは、セキュリティ・マネージャcheckPermissionメソッドをSerializablePermission("enableSubstitution")アクセス許可で最初に呼び出して、呼び出し側がストリームによるオブジェクトの置換ストリームに書き込まれます。

      パラメータ:
      enable - 直列化されるすべてのオブジェクトに対してreplaceObjectの使用を有効にする場合はtrue
      戻り値:
      このメソッドが呼び出される前の設定
      例外:
      SecurityException - セキュリティ・マネージャが存在し、checkPermissionメソッドがストリームに書き込まれたオブジェクトの置換を行うことを拒否する場合。
      関連項目:
      SecurityManager.checkPermission(java.security.Permission)SerializablePermission
    • writeStreamHeader

      protected void writeStreamHeader() throws IOException
      サブクラスが自身のヘッダーをストリームの前または後ろに追加できるように提供されています。 このメソッドは、マジック番号とバージョン情報をストリームに書き込みます。
      例外:
      IOException - ベースとなるストリームの書込み中に入出力エラーが発生した場合
    • writeClassDescriptor

      protected void writeClassDescriptor​(ObjectStreamClass desc) throws IOException
      指定されたクラス記述子をObjectOutputStreamに書き込みます。 クラス記述子はストリームに書き込まれたオブジェクトのクラスを識別する際に使用します。 ObjectOutputStreamのサブクラスでこのメソッドをオーバーライドすることにより、直列化ストリームにクラス記述子を書き込む方法をカスタマイズできます。 その後、ObjectInputStream内の対応するメソッドreadClassDescriptorをオーバーライドして、カスタムのストリーム表現からクラス記述子を再構築するようにしてください。 デフォルトでは、このメソッドはクラス記述子をオブジェクト直列化仕様に定義された形式で書き込みます。

      このメソッドを呼び出すことができるのは、ObjectOutputStreamのuseProtocolVersionメソッドを呼び出すことによって設定される古い直列化ストリーム形式をObjectOutputStreamが使用していない場合のみである点に注意してください。 この直列化ストリームが古い形式(PROTOCOL_VERSION_1)を使用している場合、クラス記述子はオーバーライドまたはカスタマイズが不可能な方法で内部的に書き込まれます。

      パラメータ:
      desc - ストリームに書き込むクラス記述子
      例外:
      IOException - 入出力エラーが発生した場合。
      導入されたバージョン:
      1.3
      関連項目:
      ObjectInputStream.readClassDescriptor(), useProtocolVersion(int), ObjectStreamConstants.PROTOCOL_VERSION_1
    • write

      public void write​(int val) throws IOException
      バイトを書き込みます。 このメソッドはバイトが実際に書き込まれるまでブロックします。
      定義:
      write、インタフェース: DataOutput
      定義:
      write、インタフェース: ObjectOutput
      定義:
      write、クラス: OutputStream
      パラメータ:
      val - ストリームに書き込まれるバイト
      例外:
      IOException - 入出力エラーが発生した場合。
    • write

      public void write​(byte[] buf) throws IOException
      バイト配列を書き込みます。 このメソッドはバイトが実際に書き込まれるまでブロックします。
      定義:
      write、インタフェース: DataOutput
      定義:
      write、インタフェース: ObjectOutput
      オーバーライド:
      write、クラス: OutputStream
      パラメータ:
      buf - 書き込まれるデータ
      例外:
      IOException - 入出力エラーが発生した場合。
      関連項目:
      OutputStream.write(byte[], int, int)
    • write

      public void write​(byte[] buf, int off, int len) throws IOException
      バイト配列の一部を書き込みます。
      定義:
      write、インタフェース: DataOutput
      定義:
      write、インタフェース: ObjectOutput
      オーバーライド:
      write、クラス: OutputStream
      パラメータ:
      buf - 書き込まれるデータ
      off - データ内の開始オフセット
      len - 書き込まれるバイト数
      例外:
      IOException - 入出力エラーが発生した場合。
    • flush

      public void flush() throws IOException
      ストリームをフラッシュします。 このメソッドは、バッファリングされているすべての出力バイトを書き込んで、ベースとなるストリームを通してフラッシュします。
      定義:
      flush、インタフェース: Flushable
      定義:
      flush、インタフェース: ObjectOutput
      オーバーライド:
      flush、クラス: OutputStream
      例外:
      IOException - 入出力エラーが発生した場合。
    • drain

      protected void drain() throws IOException
      ObjectOutputStream内のバッファリングされているデータをすべて排出します。 フラッシュと似ていますが、ベースとなるストリームにフラッシュを伝播しません。
      例外:
      IOException - ベースとなるストリームの書込み中に入出力エラーが発生した場合
    • close

      public void close() throws IOException
      ストリームを閉じます。 ストリームに関連するすべてのリソースを解放するために、このメソッドを呼び出す必要があります。
      定義:
      close、インタフェース: AutoCloseable
      定義:
      close、インタフェース: Closeable
      定義:
      close、インタフェース: ObjectOutput
      オーバーライド:
      close、クラス: OutputStream
      例外:
      IOException - 入出力エラーが発生した場合。
    • writeBoolean

      public void writeBoolean​(boolean val) throws IOException
      booleanを書き込みます。
      定義:
      writeBoolean、インタフェース: DataOutput
      パラメータ:
      val - 書き込まれるboolean
      例外:
      IOException - ベースとなるストリームの書込み中に入出力エラーが発生した場合
    • writeByte

      public void writeByte​(int val) throws IOException
      8ビットのバイトを書き込みます。
      定義:
      writeByte、インタフェース: DataOutput
      パラメータ:
      val - 書き込まれるバイト値
      例外:
      IOException - ベースとなるストリームの書込み中に入出力エラーが発生した場合
    • writeShort

      public void writeShort​(int val) throws IOException
      16ビットのshortを書き込みます。
      定義:
      writeShort、インタフェース: DataOutput
      パラメータ:
      val - 書き込まれるshort値
      例外:
      IOException - ベースとなるストリームの書込み中に入出力エラーが発生した場合
    • writeChar

      public void writeChar​(int val) throws IOException
      16ビットのcharを書き込みます。
      定義:
      writeChar、インタフェース: DataOutput
      パラメータ:
      val - 書き込まれるchar値
      例外:
      IOException - ベースとなるストリームの書込み中に入出力エラーが発生した場合
    • writeInt

      public void writeInt​(int val) throws IOException
      32ビットのintを書き込みます。
      定義:
      writeInt、インタフェース: DataOutput
      パラメータ:
      val - 書き込まれるint値
      例外:
      IOException - ベースとなるストリームの書込み中に入出力エラーが発生した場合
    • writeLong

      public void writeLong​(long val) throws IOException
      64ビットのlongを書き込みます。
      定義:
      writeLong、インタフェース: DataOutput
      パラメータ:
      val - 書き込まれるlong値
      例外:
      IOException - ベースとなるストリームの書込み中に入出力エラーが発生した場合
    • writeFloat

      public void writeFloat​(float val) throws IOException
      32ビットのfloatを書き込みます。
      定義:
      writeFloat、インタフェース: DataOutput
      パラメータ:
      val - 書き込まれるfloat値
      例外:
      IOException - ベースとなるストリームの書込み中に入出力エラーが発生した場合
    • writeDouble

      public void writeDouble​(double val) throws IOException
      64ビットのdoubleを書き込みます。
      定義:
      writeDouble、インタフェース: DataOutput
      パラメータ:
      val - 書き込まれるdouble値
      例外:
      IOException - ベースとなるストリームの書込み中に入出力エラーが発生した場合
    • writeBytes

      public void writeBytes​(String str) throws IOException
      Stringをバイトの列として書き込みます。
      定義:
      writeBytes、インタフェース: DataOutput
      パラメータ:
      str - 書き込まれるバイトの文字列
      例外:
      IOException - ベースとなるストリームの書込み中に入出力エラーが発生した場合
    • writeChars

      public void writeChars​(String str) throws IOException
      Stringをcharの列として書き込みます。
      定義:
      writeChars、インタフェース: DataOutput
      パラメータ:
      str - 書き込まれるcharの文字列
      例外:
      IOException - ベースとなるストリームの書込み中に入出力エラーが発生した場合
    • writeUTF

      public void writeUTF​(String str) throws IOException
      このStringのプリミティブ・データを修正UTF-8形式で書き込みます。 ストリームにStringをプリミティブ・データとして書き込むことと、Objectとして書き込むことには大きな違いがあります。 writeObjectによって書き込まれるStringのインスタンスは、最初はStringとしてストリームに書き込まれます。 それ以降のwriteObject()の呼出しは、文字列への参照をストリームに書き込みます。
      定義:
      writeUTF、インタフェース: DataOutput
      パラメータ:
      str - 書き込まれる文字列
      例外:
      IOException - ベースとなるストリームの書込み中に入出力エラーが発生した場合