JavaTM 2
Platform
Std. Ed. v1.4.0

java.io
クラス ObjectOutputStream

java.lang.Object
  |
  +--java.io.OutputStream
        |
        +--java.io.ObjectOutputStream
すべての実装インタフェース:
DataOutput, ObjectOutput, ObjectStreamConstants

public class ObjectOutputStream
extends OutputStream
implements ObjectOutput, ObjectStreamConstants

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

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

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

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

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

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

	FileOutputStream ostream = new FileOutputStream("t.tmp");
	ObjectOutputStream p = new ObjectOutputStream(ostream);

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

	p.flush();
	ostream.close();
 

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

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

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

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

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

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

直列化可能フィールドおよび外部化可能データを除くプリミティブデータは、ブロックデータレコードとして 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_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_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()
          ストリームにすでに書き込まれているオブジェクトの状態を無効にします。
 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 形式で書き込みます。
 
クラス 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 - 信頼されていないサブクラスが、セキュリティ上重要なメソッドを不正にオーバーライドした場合
関連項目:
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 を使用して書き込んだオブジェクトを直列化復元したときに、そのオブジェクトへの参照が一意であるとは限りません。 writeUnshared では、1 つのオブジェクトをストリーム内に複数回定義できるため、受信側から readUnshared を複数回呼び出しても重複は発生しません。この規則は、writeUnshared を使用して書き込まれたベースレベルのオブジェクトにだけ適用されます。直列化するオブジェクトグラフ内で参照されるサブオブジェクトには適用されません。

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

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

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
ストリームにすでに書き込まれているオブジェクトの状態を無効にします。状態は、新しい 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 に渡されます。オブジェクトの 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 が古い直列化ストリーム形式 (ObjectOutputStream の useProtocolVersion メソッドを呼び出して設定) を使用していない場合に限り呼び出される点に注意してください。この直列化ストリームが古い形式 (PROTOCOL_VERSION_1) を使用している場合、クラス記述子はオーバーライドされない方法またはカスタマイズできない方法で内部的に書き込まれます。

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

write

public void write(int val)
           throws IOException
データのバイトを書き込みます。このメソッドは、データが実際に書き込まれるまでブロックします。

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

write

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

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

write

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

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

flush

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

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

drain

protected void drain()
              throws IOException
ObjectOutputStream にあるバッファデータをすべて空にします。flush と似た動作ですが、このメソッドでは基本となるストリームの flush は起こりません。

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

close

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

定義:
インタフェース 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 形式で書き込みます。ストリームに String をプリミティブデータとして書き込むことと、Object として書き込むことには大きな違いがあります。writeObject によって書き込まれる String のインスタンスは、最初は String としてストリームに書き込まれます。それ以降の writeObject() の呼び出しは、文字列への参照をストリームに書き込みます。

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

JavaTM 2
Platform
Std. Ed. v1.4.0

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

Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.