public class ObjectInputStream extends InputStream implements ObjectInput, ObjectStreamConstants
ObjectOutputStreamとObjectInputStreamは、FileOutputStreamまたはFileInputStreamとともに使えば、アプリケーションに、オブジェクトのグラフのための持続的なストレージを提供することができます。 ObjectInputStreamは、事前に直列化されたオブジェクトを元に戻すために使います。 ほかの使用方法としては、ソケット・ストリームの使用による、ホスト間でのオブジェクトの受け渡しや、リモート通信システムでの属性やパラメータの整列や整列解除があります。
ObjectInputStreamは、ストリームから作成されたオブジェクト・グラフでのすべての型のオブジェクトが、Java Virtual Machineに存在するクラスに確実にマッチするようにします。 クラスは、標準のメカニズムを使って必要に応じてロードされます。
ストリームから読み込むことができるのは、java.io.Serializableインタフェースかjava.io.Externalizableインタフェースをサポートするオブジェクトだけです。
オブジェクトをストリームから読み込むにはreadObject
メソッドを使います。 希望の型を取得するには、Javaの安全なキャストを使う必要があります。 Javaでは、文字列と配列はオブジェクトで、直列化の間はオブジェクトとして扱われます。 それらを読み込む際には、希望の型にキャストされている必要があります。
プリミティブ・データ型をストリームから読み込むには、DataInputの適切なメソッドを使います。
オブジェクトのデフォルトの直列化復元メカニズムは、各フィールドの内容を、書き込まれたときの状態に戻します。 transientまたはstaticと宣言されたフィールドは、直列化復元処理では無視されます。 ほかのオブジェクトを参照すると、それらのオブジェクトは、必要に応じてストリームから読み込まれます。 オブジェクトのグラフは、参照共有メカニズムを使って正しく復元されます。 直列化復元が行われるときには、常に新しいオブジェクトが割り当てられ、それによって既存のオブジェクトへの上書きが防止されます。
オブジェクトの読込みは、新しいオブジェクトのコンストラクタの実行に似ています。 メモリーがオブジェクトに割り当てられ、ゼロ(NULL)に初期化されます。 直列化可能でないクラスに対して、引数なしのコンストラクタが呼び出されたあと、直列化可能クラスのフィールドが、java.lang.Objectにもっとも近いクラスから始まって、もっともオブジェクトに固有のクラスで終わるストリームから復元されます。
たとえば、ObjectOutputStreamの例で書き込まれたストリームからの読込みは、次のように行います。
FileInputStream fis = new FileInputStream("t.tmp"); ObjectInputStream ois = new ObjectInputStream(fis); int i = ois.readInt(); String today = (String) ois.readObject(); Date date = (Date) ois.readObject(); ois.close();
クラスは、インタフェースjava.io.Serializableまたはjava.io.Externalizableを実装することによって、クラスがどのように直列化されるかを制御します。
Serializableインタフェースを実装することによって、オブジェクトの直列化が、オブジェクトの状態全体の保存と復元を行うことが可能になり、またクラスが、ストリームの書込み時とストリームの読込み時の間に展開することが可能になります。 オブジェクトの直列化は、オブジェクト間の参照を自動的にトラバースし、オブジェクト・グラフの全体を保存および復元します。
直列化処理と直列化復元処理のときに特別な操作を必要とするSerializableクラスは、次のメソッドを実装する必要があります。
private void writeObject(java.io.ObjectOutputStream stream) throws IOException; private void readObject(java.io.ObjectInputStream stream) throws IOException, ClassNotFoundException; private void readObjectNoData() throws ObjectStreamException;
readObjectメソッドは、対応するwriteObjectメソッドによってストリームに書き込まれたデータを使用する特定のクラスについて、オブジェクトの状態を読み込みおよび復元する責任を持ちます。 このメソッドは、そのスーパー・クラスやサブクラスに属する状態に関与する必要はありません。 状態を復元するには、個々のフィールドについてObjectInputStreamからデータを読み込み、オブジェクトの適切なフィールドへの割り当てを行います。 プリミティブ・データ型の読込みは、DataInputによってサポートされます。
オブジェクト・データを読み込もうとするときに、その位置が対応するwriteObjectメソッドによって書き込まれたカスタム・データの境界を超えている場合は、eofフィールドの値がtrueの状態でOptionalDataExceptionがスローされます。 オブジェクトを直列化して読み込もうとするときに、その位置が割当て済みデータの終わりを超えている場合は、ストリームの場合と同様に、データの終わりを示す例外が返されます。つまり、バイト単位の読込みでは、バイトが読み込まれたときに -1が返されます。プリミティブ読込みでは、EOFExceptionがスローされます。 対応するwriteObjectメソッドがない場合は、デフォルトの直列化データの終わりが割当て済みデータの終わりになります。
プリミティブ読み込みとオブジェクト読込みがreadExternalメソッドから呼び出された場合は、両方とも同じように動作します。ストリームの位置が対応するwriteExternalメソッドによって書き込まれたデータの終わりにある場合、オブジェクト読込みではeofがtrueに設定された状態でOptionalDataExceptionがスローされ、バイトの読込みでは -1を返し、プリミティブ読込みではEOFExceptionがスローされます。 ただし、古いObjectStreamConstants.PROTOCOL_VERSION_1
プロトコルを使用して書き込まれたストリームでは、この動作は適用されません。writeExternalメソッドと異なり、データの終わりが書き込まれないため、データの終わりを検出できないためです。
readObjectNoDataメソッドは、あるクラスが直列化復元されるオブジェクトのスーパー・クラスとして直列化ストリームに指定されていないときに、そのクラスについてそのオブジェクトの状態を初期化します。 これは、受け取り側が、送り側とは異なるバージョンの直列化復元されたインスタンスのクラスを使用し、受け取り側のバージョンが送り側のバージョンによって継承されないクラスを継承する場合に発生する可能性があります。 また、直列化ストリームが改変された場合にも発生することがあります。したがって、readObjectNoDataは、「悪意のある」または不正なソース・ストリームであっても、直列化復元されたオブジェクトを正しく初期化するのに役立ちます。
直列化は、java.io.Serializableインタフェースを実装しないオブジェクトのフィールドの読込みや、それらのフィールドへの値の割当ては行いません。 直列化可能でないオブジェクトのサブクラスを直列化可能にすることができます。 この場合、直列化可能でないクラスは、そのフィールドを初期化できるようにするため、引数なしのコンストラクタを持つ必要があります。 この場合、直列化可能でないクラスの状態を保存および復元するのは、サブクラスの責任になります。 そのクラスのフィールドがアクセス可能である(public、package、またはprotected)場合、あるいは状態の復元に利用できるsetメソッドやgetメソッドがある場合がしばしばあります。
オブジェクトを直列化復元する間に発生したすべての例外は、ObjectInputStreamにキャッチされ、読込み処理を異常終了させます。
Externalizableインタフェースを実装すると、オブジェクトの直列化された形式の内容および形式をオブジェクト側が完全に制御することが可能になります。 ExternalizableインタフェースのメソッドであるwriteExternalとreadExternalは、オブジェクトの状態を保存および復元するために呼び出されます。 これらのメソッドは、クラスによって実装された場合には、ObjectOutputとObjectInputのすべてのメソッドを使って、自身の状態の書き込みおよび読込みを行うことができます。 どのようなバージョンであっても処理できるようにするのは、オブジェクトの責任です。
enum定数の直列化復元は、通常の直列化可能または外部化可能オブジェクトとは異なります。 enum定数の直列化された形式を構成するのは、その名前だけです。定数のフィールド値は転送されません。 enum定数を直列化復元するには、ObjectInputStreamでストリームから定数名を読み込みます。次に、enum定数の基底型と受け取った定数名を引数としてstaticメソッドのEnum.valueOf(Class, String)
を呼び出し、直列化復元された定数を取得します。 他の直列化可能または外部化可能オブジェクト同様に、enum定数は、以後直列化ストリームに出現する後方参照の対象として機能できます。 enum定数を直列化復元するプロセスをカスタマイズすることはできません。enum型で定義された、クラス固有のreadObject、readObjectNoData、およびreadResolveメソッドはどれも直列化復元の間は無視されます。 同様に、serialPersistentFieldsまたはserialVersionUIDのフィールド宣言もすべて無視されます。すべてのenum型は0Lで固定されたserialVersionUIDを持ちます。
DataInput
, ObjectOutputStream
, Serializable
, 「オブジェクト直列化仕様」のセクション3「オブジェクト入力クラス」修飾子と型 | クラス | 説明 |
---|---|---|
static class |
ObjectInputStream.GetField |
入力ストリームから読み込まれた持続フィールドへのアクセスを提供します。
|
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 |
ObjectInputStream() |
ObjectInputStreamを完全に再実装するサブクラスが、ObjectInputStreamのこの実装によって使用されたばかりのprivateデータを割り当てる必要がないようにする手段を提供します。
|
|
ObjectInputStream(InputStream in) |
指定されたInputStreamから読み込むObjectInputStreamを作成します。
|
修飾子と型 | メソッド | 説明 |
---|---|---|
int |
available() |
ブロックせずに読み込むことができるバイト数を返します。
|
void |
close() |
入力ストリームを閉じます。
|
void |
defaultReadObject() |
現在のクラスの非staticおよび非transientフィールドを、このストリームから読み込みます。
|
protected boolean |
enableResolveObject(boolean enable) |
ストリームから読み込まれたオブジェクトを置換できるようにします。
|
int |
read() |
データのバイトを読み込みます。
|
int |
read(byte[] buf, int off, int len) |
バイト配列に読み込みます。
|
boolean |
readBoolean() |
booleanを読み込みます。
|
byte |
readByte() |
8ビットのバイトを読み込みます。
|
char |
readChar() |
16ビットのcharを読み込みます。
|
protected ObjectStreamClass |
readClassDescriptor() |
直列化ストリームからクラス記述子を読み込みます。
|
double |
readDouble() |
64ビットのdoubleを読み込みます。
|
ObjectInputStream.GetField |
readFields() |
ストリームから持続フィールドを読み込み、それらを名前を指定してアクセスできるようにします。
|
float |
readFloat() |
32ビットのfloatを読み込みます。
|
void |
readFully(byte[] buf) |
バイトを読み込みます。すべてのバイトが読み込まれるまでブロックします。
|
void |
readFully(byte[] buf, int off, int len) |
バイトを読み込みます。すべてのバイトが読み込まれるまでブロックします。
|
int |
readInt() |
32ビットのintを読み込みます。
|
String |
readLine() |
非推奨。
このメソッドはバイトを正確に文字に変換しません。詳細および代替メソッドについてはDataInputStreamを参照してください。
|
long |
readLong() |
64ビットのlongを読み込みます。
|
Object |
readObject() |
ObjectInputStreamからオブジェクトを読み込みます。
|
protected Object |
readObjectOverride() |
このメソッドは、引数なしのprotectedコンストラクタを使用して、ObjectInputStreamを構築したObjectInputStreamの信頼できるサブクラスによって呼び出されます。
|
short |
readShort() |
16ビットのshortを読み込みます。
|
protected void |
readStreamHeader() |
サブクラスが自身のストリーム・ヘッダーの読み込みと検証を行えるようにするために提供されています。
|
Object |
readUnshared() |
ObjectInputStreamから「共有されない」オブジェクトを読み込みます。
|
int |
readUnsignedByte() |
符号なし8ビット・バイトを読み込みます。
|
int |
readUnsignedShort() |
符号なし16ビットのshortを読み込みます。
|
String |
readUTF() |
修正UTF-8形式の文字列を読み込みます。
|
void |
registerValidation(ObjectInputValidation obj, int prio) |
オブジェクト・グラフが返される前に検証されるべきオブジェクトを登録します。
|
protected Class<?> |
resolveClass(ObjectStreamClass desc) |
指定されたストリーム・クラスの記述に対応するローカル・クラスをロードします。
|
protected Object |
resolveObject(Object obj) |
このメソッドは、直列化復元の際に、ObjectInputStreamの信頼できるサブクラスが、あるオブジェクトをほかのオブジェクトに置換できるようにします。
|
protected Class<?> |
resolveProxyClass(String[] interfaces) |
プロキシ・クラス記述子で指定されたインタフェースを実装するプロキシ・クラスを返します。サブクラスはこのメソッドを実装してダイナミック・プロキシ・クラスの記述子とともにストリームからカスタム・データを読み込み、インタフェースやプロキシ・クラスの代替ローディング・メカニズムを使用できるようにします。
|
int |
skipBytes(int len) |
バイトをスキップします。
|
mark, markSupported, read, reset, skip
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
read, skip
public ObjectInputStream(InputStream in) throws IOException
セキュリティ・マネージャがインストールされている場合、ObjectInputStream.readFieldsメソッドまたはObjectInputStream.readUnsharedメソッドをオーバーライドするサブクラスのコンストラクタによってSerializablePermission("enableSubclassImplementation")が直接または間接に呼び出されたときに、このコンストラクタはこのアクセス権を確認します。
in
- 読込み元の入力ストリームStreamCorruptedException
- ストリーム・ヘッダーが不正な場合IOException
- ストリーム・ヘッダーの読込み中に入出力エラーが発生した場合SecurityException
- 信頼できないサブクラスが、セキュリティ上重要なメソッドを不正にオーバーライドした場合NullPointerException
- in
がnull
である場合ObjectInputStream()
, readFields()
, ObjectOutputStream.ObjectOutputStream(OutputStream)
protected ObjectInputStream() throws IOException, SecurityException
セキュリティ・マネージャがインストールされている場合、このメソッドはまずセキュリティ・マネージャのcheckPermission
メソッドをアクセス権SerializablePermission("enableSubclassImplementation")
で呼び出し、サブクラス化を有効にできるようにします。
SecurityException
- セキュリティ・マネージャが存在し、そのcheckPermission
メソッドがサブクラス化を有効にすることを拒否した場合。IOException
- このストリームの作成中に入出力エラーが発生した場合SecurityManager.checkPermission(java.security.Permission)
、SerializablePermission
public final Object readObject() throws IOException, ClassNotFoundException
ルート・オブジェクトは、参照するフィールドとオブジェクトのすべてが復元された時、完全に復元されます。 この時点で、それらの登録された優先順位に基づいて、オブジェクト検証コールバックが実行されます。 このコールバックは、(特別なreadObjectメソッドの)オブジェクトによって、それらが個別に復元されるときに登録されます。
例外は、InputStreamに関する問題や、直列化復元すべきではないクラスについてスローされます。 すべての例外は、InputStreamにとって致命的で、InputStreamを不確定の状態にします。ストリームの状態を無視するか回復処理するかを決めるのは呼出し側です。
readObject
、インタフェースObjectInput
ClassNotFoundException
- 直列化されたオブジェクトのクラスが見つからなかった場合。InvalidClassException
- 直列化で使用されるクラスになんらかの不具合があった場合。StreamCorruptedException
- ストリームの制御情報に一貫性がない場合。OptionalDataException
- プリミティブ・データが、オブジェクトではなくストリームに見つかった場合。IOException
- 通常の入出力関連の例外が発生した場合。protected Object readObjectOverride() throws IOException, ClassNotFoundException
ClassNotFoundException
- 直列化されたオブジェクトのクラス定義が見つからなかった場合。OptionalDataException
- プリミティブ・データが、オブジェクトではなくストリームに見つかった場合。IOException
- ベースとなるストリームの読込み中に入出力エラーが発生した場合ObjectInputStream()
, readObject()
public Object readUnshared() throws IOException, ClassNotFoundException
このメソッドをオーバーライドするObjectInputStreamサブクラスは、SerializablePermission("enableSubclassImplementation")を持つセキュリティ・コンテキスト内だけで構築できます。このアクセス権を持たないセキュリティ・コンテキストでインスタンス化しようとすると、SecurityExceptionがスローされます。
ClassNotFoundException
- 直列化復元するオブジェクトのクラスが見つからなかった場合StreamCorruptedException
- ストリームの制御情報に一貫性がない場合ObjectStreamException
- 直列化復元するオブジェクトがすでにストリーム内にあった場合OptionalDataException
- ストリーム内の次のデータがプリミティブの場合IOException
- 直列化復元中に入出力エラーが発生した場合public void defaultReadObject() throws IOException, ClassNotFoundException
ClassNotFoundException
- 直列化されたオブジェクトのクラスが見つからなかった場合。IOException
- 入出力エラーが発生した場合。NotActiveException
- ストリームが現在オブジェクトを読み込んでいない場合。public ObjectInputStream.GetField readFields() throws IOException, ClassNotFoundException
GetField
オブジェクトClassNotFoundException
- 直列化されたオブジェクトのクラスが見つからなかった場合。IOException
- 入出力エラーが発生した場合。NotActiveException
- ストリームが現在オブジェクトを読み込んでいない場合。public void registerValidation(ObjectInputValidation obj, int prio) throws NotActiveException, InvalidObjectException
obj
- 検証のコールバックを受け取るオブジェクト。prio
- コールバックの順序を制御する値。0が適切なデフォルト値である。 早くコールバックする場合は大きい番号を、あとでコールバックする場合は小さい番号を使う。 同じ優先順位内では、コールバックの処理に特別な順序はない。 NotActiveException
- ストリームが現在オブジェクトを読み込んでいないため、コールバックを登録できない場合。InvalidObjectException
- 検証オブジェクトがnullである場合。protected Class<?> resolveClass(ObjectStreamClass desc) throws IOException, ClassNotFoundException
ObjectOutputStream
内で対応するメソッドはannotateClass
です。 このメソッドは、ストリームの一意のクラスそれぞれについて1回だけ呼び出されます。 このメソッドは、代替のロード・メカニズムを使用するためにサブクラスによって実装することができますが、Class
オブジェクトを返す必要があります。 返されたクラスが配列クラスでない場合は、そのserialVersionUIDが、直列化されたクラスのserialVersionUIDと比較されます。不一致がある場合、直列化復元が失敗し、InvalidClassException
がスローされます。
ObjectInputStream
内のこのメソッドのデフォルト実装は、次の呼出しの結果を返します
Class.forName(desc.getName(), false, loader)
loader
は、次のように決定されます。メソッドの宣言クラスがユーザー定義のクラス・ローダーによって定義されていて、リフレクトによる呼出しの実装を目的に生成されていない場合、そのメソッドが現在のスレッドのスタック上に存在すると、loader
は現在実行中のフレームにもっとも近いメソッドに対応するクラス・ローダーになります。そうでない場合、loader
はnull
です。 この呼出しの結果がClassNotFoundException
で、渡されたObjectStreamClass
インスタンスの名前がプリミティブ型またはvoidに対するJava言語のキーワードである場合は、そのプリミティブ型またはvoidを表すClass
オブジェクトが返されます。たとえば、"int"
という名前のObjectStreamClass
はInteger.TYPE
に解決されます。 そうでない場合は、このメソッドの呼出し側にClassNotFoundException
がスローされます。 desc
- ObjectStreamClass
クラスのインスタンスdesc
に対応するClass
オブジェクトIOException
- 通常の入出力関連の例外が発生した場合。ClassNotFoundException
- 直列化されたオブジェクトのクラスが見つからなかった場合。protected Class<?> resolveProxyClass(String[] interfaces) throws IOException, ClassNotFoundException
このメソッドはストリームの一意の各プロキシ・クラス記述子について1回だけ呼び出されます。
ObjectOutputStream
内で対応するメソッドはannotateProxyClass
です。 このメソッドをオーバーライドするObjectInputStream
の指定されたサブクラスについては、ObjectOutputStream
内の対応するサブクラスのannotateProxyClass
メソッドが、このメソッドが読み込むデータまたはオブジェクトをすべて書き込む必要があります。
ObjectInputStream
内のこのメソッドのデフォルト実装は、interfaces
パラメータに指定されたインタフェースに対するClass
オブジェクトのリストを使用してProxy.getProxyClass
を呼び出した結果を返します。 各インタフェース名i
に対するClass
オブジェクトは、次の呼出しによって返された値です。
Class.forName(i, false, loader)
loader
は、実行スタックに格納されるnull
でない最初のクラス・ローダーです。ただし、null
でないクラス・ローダーがスタック上にない場合は、null
です。このクラス・ローダーの選択は、resolveClass
メソッドで使用されるものと同じです。 解決されたインタフェースのすべてがpublicである場合は、このloader
と同じ値がProxy.getProxyClass
に渡されるクラス・ローダーにもなります。一方、publicでないインタフェースが存在する場合は、代わりにそれらのインタフェースのクラス・ローダーが渡されます。publicでないインタフェース・クラス・ローダーが複数検出された場合は、IllegalAccessError
がスローされます。 Proxy.getProxyClass
からIllegalArgumentException
がスローされると、resolveProxyClass
はそのIllegalArgumentException
を含むClassNotFoundException
をスローします。 interfaces
- プロキシ・クラス記述子に直列化復元されたインタフェース名のリストIOException
- ベースとなるInputStream
が例外をスローした場合ClassNotFoundException
- プロキシ・クラスまたは指定されたインタフェースがどれも見つからなかった場合ObjectOutputStream.annotateProxyClass(Class)
protected Object resolveObject(Object obj) throws IOException
このメソッドは、オブジェクトが読み込まれたあと、readObjectから復帰する前に呼び出されます。 デフォルトのresolveObjectメソッドは、同じオブジェクトを返します。
サブクラスは、オブジェクトを置換するとき、置換されたオブジェクトと、参照が格納される各フィールドとの互換性を保つようにする必要があります。 フィールドまたは配列要素の型のサブクラスではない型のオブジェクトは、例外を発生させることによって直列化を中断し、その結果オブジェクトは格納されません。
このメソッドは、各オブジェクトが最初に検出されたときに1回だけ呼び出されます。 これ以後検出されるそのオブジェクトへの参照は、新しいオブジェクトにリダイレクトされます。
obj
- 置換されるオブジェクトIOException
- 通常の入出力関連の例外が発生した場合。protected boolean enableResolveObject(boolean enable) throws SecurityException
enableがtrueで、セキュリティ・マネージャがインストールされている場合、このメソッドはまずセキュリティ・マネージャのcheckPermission
メソッドをアクセス権SerializablePermission("enableSubstitution")
で呼び出し、ストリームから読み込まれたオブジェクトの置換をストリームが許可できるようにします。
enable
- 直列化復元される各オブジェクトについてresolveObject
の使用を有効にする場合はtrueSecurityException
- セキュリティ・マネージャが存在し、そのcheckPermission
メソッドが、ストリームから読み込まれたオブジェクトの置換をストリームが許可できるようにすることを拒否する場合。SecurityManager.checkPermission(java.security.Permission)
、SerializablePermission
protected void readStreamHeader() throws IOException, StreamCorruptedException
IOException
- ベースとなるInputStream
の読込み中に入出力エラーが発生した場合StreamCorruptedException
- ストリームの制御情報に一貫性がない場合protected ObjectStreamClass readClassDescriptor() throws IOException, ClassNotFoundException
writeClassDescriptor
メソッドをオーバーライドしたObjectOutputStreamのサブクラスによって標準ではない形式で書き込まれたクラス記述子に読み込むために、ObjectInputStreamのサブクラスがこのメソッドをオーバーライドすることがあります。 デフォルトでは、このメソッドはクラス記述子をオブジェクト直列化仕様に定義された形式で読み込みます。 IOException
- 入出力エラーが発生した場合。ClassNotFoundException
- クラス記述子表現に使用した直列化されたオブジェクトのクラスが見つからなかった場合ObjectOutputStream.writeClassDescriptor(java.io.ObjectStreamClass)
public int read() throws IOException
read
、インタフェースObjectInput
read
、クラスInputStream
IOException
- 入出力エラーが発生した場合。public int read(byte[] buf, int off, int len) throws IOException
read
、インタフェースObjectInput
read
、クラスInputStream
buf
- データの読込み先のバッファoff
- データの開始オフセットlen
- 読み込まれる最大バイト数IOException
- 入出力エラーが発生した場合。DataInputStream.readFully(byte[],int,int)
public int available() throws IOException
available
、インタフェースObjectInput
available
、クラスInputStream
IOException
- ベースとなるInputStream
の読込み中に入出力エラーが発生した場合public void close() throws IOException
close
、インタフェースCloseable
close
、インタフェースObjectInput
close
、インタフェースAutoCloseable
close
、クラスInputStream
IOException
- 入出力エラーが発生した場合。public boolean readBoolean() throws IOException
readBoolean
、インタフェースDataInput
EOFException
- ファイルの終わりに達した場合。IOException
- ほかの入出力エラーが発生した場合。public byte readByte() throws IOException
readByte
、インタフェースDataInput
EOFException
- ファイルの終わりに達した場合。IOException
- ほかの入出力エラーが発生した場合。public int readUnsignedByte() throws IOException
readUnsignedByte
、インタフェースDataInput
EOFException
- ファイルの終わりに達した場合。IOException
- ほかの入出力エラーが発生した場合。public char readChar() throws IOException
readChar
、インタフェースDataInput
EOFException
- ファイルの終わりに達した場合。IOException
- ほかの入出力エラーが発生した場合。public short readShort() throws IOException
readShort
、インタフェースDataInput
EOFException
- ファイルの終わりに達した場合。IOException
- ほかの入出力エラーが発生した場合。public int readUnsignedShort() throws IOException
readUnsignedShort
、インタフェースDataInput
EOFException
- ファイルの終わりに達した場合。IOException
- ほかの入出力エラーが発生した場合。public int readInt() throws IOException
readInt
、インタフェースDataInput
EOFException
- ファイルの終わりに達した場合。IOException
- ほかの入出力エラーが発生した場合。public long readLong() throws IOException
readLong
、インタフェースDataInput
EOFException
- ファイルの終わりに達した場合。IOException
- ほかの入出力エラーが発生した場合。public float readFloat() throws IOException
readFloat
、インタフェースDataInput
EOFException
- ファイルの終わりに達した場合。IOException
- ほかの入出力エラーが発生した場合。public double readDouble() throws IOException
readDouble
、インタフェースDataInput
EOFException
- ファイルの終わりに達した場合。IOException
- ほかの入出力エラーが発生した場合。public void readFully(byte[] buf) throws IOException
readFully
、インタフェースDataInput
buf
- データの読込み先のバッファEOFException
- ファイルの終わりに達した場合。IOException
- ほかの入出力エラーが発生した場合。public void readFully(byte[] buf, int off, int len) throws IOException
readFully
、インタフェースDataInput
buf
- データの読込み先のバッファoff
- データの開始オフセットlen
- 読み込む最大バイト数EOFException
- ファイルの終わりに達した場合。IOException
- ほかの入出力エラーが発生した場合。public int skipBytes(int len) throws IOException
skipBytes
、インタフェースDataInput
len
- スキップするバイト数IOException
- 入出力エラーが発生した場合。@Deprecated public String readLine() throws IOException
readLine
、インタフェースDataInput
IOException
- ベースとなるInputStream
の読込み中に入出力エラーが発生した場合public String readUTF() throws IOException
readUTF
、インタフェースDataInput
IOException
- ベースとなるInputStream
の読込み中に入出力エラーが発生した場合UTFDataFormatException
- 読込みバイトが、有効な修正UTF-8形式でエンコードされた文字列以外であった場合 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。