|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--java.io.InputStream | +--java.io.FilterInputStream | +--java.io.LineNumberInputStream
このクラスは入力ストリームフィルタであり、現在の行番号を監視して保持する機能が追加されています。
行とはバイトの連なりであり、その最後に復帰文字 ('\r'
) か、改行文字 ('\n'
) か、または復帰文字の直後に改行文字が現れます。これら 3 種類のケースで、行を終了させる文字は 1 個の改行文字として返されます。
行番号は 0
から始まり、read
が改行文字を返すたびに 1
ずつ増分します。
LineNumberReader
フィールドの概要 |
クラス java.io.FilterInputStream から継承したフィールド |
in |
コンストラクタの概要 | |
LineNumberInputStream(InputStream in)
推奨されていません。 指定された入力ストリームから読み込む、新しい行番号付き入力ストリームを作成します |
メソッドの概要 | |
int |
available()
推奨されていません。 ブロックせずに入力ストリームから読み込むことができるバイト数を返します。 |
int |
getLineNumber()
推奨されていません。 現在の行番号を返します。 |
void |
mark(int readlimit)
推奨されていません。 入力ストリームの現在位置にマークを設定します。 |
int |
read()
推奨されていません。 この入力ストリームから、データの次のバイトを読み込みます。 |
int |
read(byte[] b,
int off,
int len)
推奨されていません。 入力ストリームからバイト配列へ最大 len バイトのデータを読み込みます。 |
void |
reset()
推奨されていません。 このストリームの位置を、入力ストリームで最後に mark メソッドが呼び出されたときのマーク位置に再設定します。
|
void |
setLineNumber(int lineNumber)
推奨されていません。 行番号を指定された引数で設定します。 |
long |
skip(long n)
推奨されていません。 入力ストリームからのデータを n バイトだけスキップしてその範囲のデータを破棄します。 |
クラス java.io.FilterInputStream から継承したメソッド |
close, markSupported, read |
クラス java.lang.Object から継承したメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
コンストラクタの詳細 |
public LineNumberInputStream(InputStream in)
in
- 基本となる入力ストリームメソッドの詳細 |
public int read() throws IOException
0
〜 255
の範囲の int
として返されます。ストリームの終わりに達してバイトがない場合は、値 -1
が返されます。このメソッドは、入力データが読み込まれるようになるか、ストリームの終わりが検出されるか、または例外がスローされるまでブロックします。
LineNumberInputStream
の read
メソッドは、その基本となる入力ストリームの read
メソッドを呼び出します。入力に現れる復帰文字と改行文字をチェックして適切な行番号を保ちます。復帰文字と復帰+改行文字は 1 個の改行文字に変換されます。
FilterInputStream
内の read
-1
IOException
- 入出力エラーが発生した場合FilterInputStream.in
,
getLineNumber()
public int read(byte[] b, int off, int len) throws IOException
len
バイトのデータを読み込みます。このメソッドは、入力が可能になるまでブロックします。
LineNumberInputStream
の read
メソッドは引数を取らない read
メソッドを繰り返し呼び出して配列に書き込みます。
FilterInputStream
内の read
b
- データの読み込み先のバッファoff
- データの開始オフセットlen
- 読み込まれる最大バイト数
-1
IOException
- 入出力エラーが発生した場合read()
public long skip(long n) throws IOException
n
バイトだけスキップしてその範囲のデータを破棄します。さまざまな理由から、skip
メソッドは、指定されたよりも少ないバイト数 (0
の場合もあり) しかスキップしないことがあります。実際にスキップしたバイト数が返されます。n
が負の値の場合、バイトはスキップされません。
LineNumberInputStream
の skip
メソッドはバイト配列を作成し、n
バイトが読み込まれるまで、またはストリームの終わりに達するまで繰り返しその中に読み込みます。
FilterInputStream
内の skip
n
- スキップするバイト数
IOException
- 入出力エラーが発生した場合FilterInputStream.in
public void setLineNumber(int lineNumber)
lineNumber
- 新規行番号getLineNumber()
public int getLineNumber()
setLineNumber(int)
public int available() throws IOException
ブロックせずに基本となる入力ストリームから k 個の文字を読み込み可能な場合、LineNumberInputStream
がブロックせずに読み込み可能な文字数は k/2 となる可能性があることに注意してください。これは、基本となる入力ストリームからの k 個の文字が k/2 対の '\r'
と '\n'
である可能性もあり、これが k/2 個の '\n'
文字に変換されるかもしれないからです。
FilterInputStream
内の available
IOException
- 入出力エラーが発生した場合FilterInputStream.in
public void mark(int readlimit)
reset
メソッドを呼び出すと、最後にマークが設定された位置にストリームを再設定するため、次回の読み込み操作では同じバイトから読み込むことになります。
LineNumberInputStream
の mark
メソッドは、private 変数に現在の行番号を記録してから、基本となる入力ストリームの mark
メソッドを呼び出します。
FilterInputStream
内の mark
readlimit
- マーク位置が無効になる前に読み込み可能なバイトの最大リミットFilterInputStream.in
,
reset()
public void reset() throws IOException
mark
メソッドが呼び出されたときのマーク位置に再設定します。
LineNumberInputStream
の reset
メソッドは、まず行番号を mark
メソッドが呼び出された時点の値にリセットし、それから基本となる入力ストリームの reset
メソッドを呼び出します。
ストリームのマークは、ストリームに何が含まれているかをチェックするために、少しデータを先読みするために使われます。これをもっとも容易に実行する方法は、一般的なパーサを呼び出すことです。ストリームがパーサで取り扱えるタイプであれば、これですべてうまく行きます。ストリームがこのようなタイプではない場合は、パーサが失敗した場所で例外を発生させます。readlimit バイトの範囲内でこれが発生した場合は、例外を検知した外部コードがストリームをリセットして、別なパーサで再試行することができます。
FilterInputStream
内の reset
IOException
- 入出力エラーが発生した場合FilterInputStream.in
,
mark(int)
|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
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.