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
, 「Java オブジェクト直列化仕様」のセクション 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 コンストラクタを使用して、ObjectOutputStream を構築した ObjectOutputStream の信頼できるサブクラスによって呼び出されます。
|
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, 2013, Oracle and/or its affiliates. All rights reserved.