JavaTM Platform
Standard Ed. 6

java.io
クラス ObjectOutputStream

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

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 を呼び出すと、最初に既存のブロックデータレコードが終了されます。

導入されたバージョン:
JDK1.1
関連項目:
DataOutput, ObjectInputStream, Serializable, Externalizable, 「オブジェクト直列化仕様の第 2 章オブジェクト出力クラス」

入れ子のクラスの概要
static class ObjectOutputStream.PutField
          ObjectOutput に書き込まれる持続フィールドへのプログラムによるアクセスを提供します。
 
フィールドの概要
 
インタフェース java.io.ObjectStreamConstants から継承されたフィールド
baseWireHandle, PROTOCOL_VERSION_1, PROTOCOL_VERSION_2, SC_BLOCK_DATA, SC_ENUM, SC_EXTERNALIZABLE, SC_SERIALIZABLE, SC_WRITE_METHOD, STREAM_MAGIC, STREAM_VERSION, SUBCLASS_IMPLEMENTATION_PERMISSION, SUBSTITUTION_PERMISSION, TC_ARRAY, TC_BASE, TC_BLOCKDATA, TC_BLOCKDATALONG, TC_CLASS, TC_CLASSDESC, TC_ENDBLOCKDATA, TC_ENUM, TC_EXCEPTION, TC_LONGSTRING, TC_MAX, TC_NULL, TC_OBJECT, TC_PROXYCLASSDESC, TC_REFERENCE, TC_RESET, TC_STRING
 
コンストラクタの概要
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.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

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.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 を不確定な状態にします。ストリームの状態を無視するか回復処理するかを決めるのは呼び出し側です。

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

writeObjectOverride

protected void writeObjectOverride(Object obj)
                            throws IOException
サブクラスがデフォルトの writeObject メソッドをオーバーライドするために使用するメソッドです。このメソッドは、引数なしの protected コンストラクタを使用して、ObjectInputStream を構築した ObjectInputStream の信頼できるサブクラスによって呼び出されます。サブクラスは、修飾子が final のオーバーライドメソッドを提供するとみなされます。

パラメータ:
obj - 基本となるストリームに書き込まれるオブジェクト
例外:
IOException - 基本となるストリームの書き込み中に入出力エラーが発生した場合
導入されたバージョン:
1.2
関連項目:
ObjectOutputStream(), writeObject(Object)

writeUnshared

public void writeUnshared(Object obj)
                   throws IOException
ObjectOutputStream に「共有されない」オブジェクトを書き込みます。このメソッドは、writeObject と似ています。ただし、直列化されたインスタンスを指す逆参照としてではなく、ストリーム内で一意の新しいオブジェクトとして書き込みます。具体的には、次のようになります。 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 メソッドが、直列化される各オブジェクトについて呼び出されます。  

enable が true で、セキュリティーマネージャーがインストールされている場合、このメソッドはまずセキュリティーマネージャーの checkPermission メソッドをアクセス権 SerializablePermission("enableSubstitution") で呼び出し、ストリームのオブジェクトをストリームが置換できるようにします。

パラメータ:
enable - オブジェクトの置き換えを可能にする boolean パラメータ
戻り値:
このメソッドが呼び出される前の設定
例外:
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
バイトを書き込みます。このメソッドはバイトが実際に書き込まれるまでブロックします。

定義:
インタフェース DataOutput 内の write
定義:
インタフェース ObjectOutput 内の write
定義:
クラス OutputStream 内の write
パラメータ:
val - ストリームに書き込まれるバイト
例外:
IOException - 入出力エラーが発生した場合

write

public void write(byte[] buf)
           throws IOException
バイト配列を書き込みます。このメソッドはバイトが実際に書き込まれるまでブロックします。

定義:
インタフェース DataOutput 内の write
定義:
インタフェース ObjectOutput 内の write
オーバーライド:
クラス OutputStream 内の write
パラメータ:
buf - 書き込まれるデータ
例外:
IOException - 入出力エラーが発生した場合
関連項目:
OutputStream.write(byte[], int, int)

write

public void write(byte[] buf,
                  int off,
                  int len)
           throws IOException
バイト配列の一部を書き込みます。

定義:
インタフェース DataOutput 内の write
定義:
インタフェース ObjectOutput 内の write
オーバーライド:
クラス OutputStream 内の write
パラメータ:
buf - 書き込まれるデータ
off - データの開始オフセット
len - 書き込まれるバイト数
例外:
IOException - 入出力エラーが発生した場合

flush

public void flush()
           throws IOException
ストリームをフラッシュします。このメソッドは、バッファリングされているすべての出力バイトを書き込んで、基本となるストリームを通してフラッシュします。

定義:
インタフェース Flushable 内の flush
定義:
インタフェース ObjectOutput 内の flush
オーバーライド:
クラス OutputStream 内の flush
例外:
IOException - 入出力エラーが発生した場合

drain

protected void drain()
              throws IOException
ObjectOutputStream 内のバッファリングされているデータをすべて排出します。フラッシュと似ていますが、基本となるストリームにフラッシュを伝播しません。

例外:
IOException - 基本となるストリームの書き込み中に入出力エラーが発生した場合

close

public void close()
           throws IOException
ストリームを閉じます。ストリームに関連するすべてのリソースを解放するために、このメソッドを呼び出す必要があります。

定義:
インタフェース Closeable 内の close
定義:
インタフェース ObjectOutput 内の close
オーバーライド:
クラス OutputStream 内の close
例外:
IOException - 入出力エラーが発生した場合

writeBoolean

public void writeBoolean(boolean val)
                  throws IOException
boolean を書き込みます。

定義:
インタフェース DataOutput 内の writeBoolean
パラメータ:
val - 書き込まれる boolean 値
例外:
IOException - 基本となるストリームの書き込み中に入出力エラーが発生した場合

writeByte

public void writeByte(int val)
               throws IOException
8 ビットのバイトを書き込みます。

定義:
インタフェース DataOutput 内の writeByte
パラメータ:
val - 書き込まれるバイト値
例外:
IOException - 基本となるストリームの書き込み中に入出力エラーが発生した場合

writeShort

public void writeShort(int val)
                throws IOException
16 ビットの short を書き込みます。

定義:
インタフェース DataOutput 内の writeShort
パラメータ:
val - 書き込まれる short 値
例外:
IOException - 基本となるストリームの書き込み中に入出力エラーが発生した場合

writeChar

public void writeChar(int val)
               throws IOException
16 ビットの char を書き込みます。

定義:
インタフェース DataOutput 内の writeChar
パラメータ:
val - 書き込まれる char 値
例外:
IOException - 基本となるストリームの書き込み中に入出力エラーが発生した場合

writeInt

public void writeInt(int val)
              throws IOException
32 ビットの int を書き込みます。

定義:
インタフェース DataOutput 内の writeInt
パラメータ:
val - 書き込まれる int 値
例外:
IOException - 基本となるストリームの書き込み中に入出力エラーが発生した場合

writeLong

public void writeLong(long val)
               throws IOException
64 ビットの long を書き込みます。

定義:
インタフェース DataOutput 内の writeLong
パラメータ:
val - 書き込まれる long 値
例外:
IOException - 基本となるストリームの書き込み中に入出力エラーが発生した場合

writeFloat

public void writeFloat(float val)
                throws IOException
32 ビットの float を書き込みます。

定義:
インタフェース DataOutput 内の writeFloat
パラメータ:
val - 書き込まれる float 値
例外:
IOException - 基本となるストリームの書き込み中に入出力エラーが発生した場合

writeDouble

public void writeDouble(double val)
                 throws IOException
64 ビットの double を書き込みます。

定義:
インタフェース DataOutput 内の writeDouble
パラメータ:
val - 書き込まれる double 値
例外:
IOException - 基本となるストリームの書き込み中に入出力エラーが発生した場合

writeBytes

public void writeBytes(String str)
                throws IOException
String をバイトの列として書き込みます

定義:
インタフェース DataOutput 内の writeBytes
パラメータ:
str - 書き込まれるバイトの文字列
例外:
IOException - 基本となるストリームの書き込み中に入出力エラーが発生した場合

writeChars

public void writeChars(String str)
                throws IOException
String を char の列として書き込みます。

定義:
インタフェース DataOutput 内の writeChars
パラメータ:
str - 書き込まれる char の文字列
例外:
IOException - 基本となるストリームの書き込み中に入出力エラーが発生した場合

writeUTF

public void writeUTF(String str)
              throws IOException
この String のプリミティブデータを修正 UTF-8 形式で書き込みます。ストリームに String をプリミティブデータとして書き込むことと、Object として書き込むことには大きな違いがあります。writeObject によって書き込まれる String のインスタンスは、最初は String としてストリームに書き込まれます。それ以降の writeObject() の呼び出しは、文字列への参照をストリームに書き込みます。

定義:
インタフェース DataOutput 内の writeUTF
パラメータ:
str - 書き込まれる文字列
例外:
IOException - 基本となるストリームの書き込み中に入出力エラーが発生した場合

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。