|
Java プラットフォーム 1.2 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
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 個の改行文字に変換されます。
-1
FilterInputStream.in
,
getLineNumber()
public int read(byte[] b, int off, int len) throws IOException
len
バイトのデータを読み込みます。このメソッドは、入力が可能になるまでブロックします。
LineNumberInputStream
の read
メソッドは引数を取らない read
メソッドを繰り返し呼び出して配列に書き込みます。
b
- データが読み込まれるバッファoff
- データの開始オフセットlen
- 読み込むバイトの最大数-1
read()
public long skip(long n) throws IOException
n
バイトだけスキップしてその範囲のデータを破棄します。さまざまな理由から、skip
メソッドは、指定されたよりも少ないバイト数(0
の場合もあり)しかスキップしないことがあります。実際にスキップしたバイト数が返されます。n
が負の値の場合、バイトはスキップされません。
LineNumberInputStream
の skip
メソッドはバイト配列を作成し、n
バイトが読み込まれるまで、またはストリームの終わりに達するまで繰り返しその中に読み込みます。
n
- スキップするバイト数FilterInputStream.in
public void setLineNumber(int lineNumber)
lineNumber
- 新しい行番号public int getLineNumber()
public int available() throws IOException
ブロックせずに基礎の入力ストリームから k 個の文字を読み込み可能な場合、LineNumberInputStream
がブロックせずに読み込み可能な文字数は k/2 となる可能性があることに注意してください。これは、基礎入力ストリームからの k 個の文字が k/2 対の '\r'
と '\n'
である可能性もあり、これが k/2 個の '\n'
文字に変換されるかもしれないからです。
FilterInputStream.in
public void mark(int readlimit)
reset
メソッドを呼び出すと、最後にマークが設定された位置にストリームを再設定するため、次回の読み込み操作では同じバイトから読み込むことになります。
LineNumberInputStream
の mark
メソッドは、private 変数に現在の行番号を記録してから、基礎入力ストリームの mark
メソッドを呼び出します。
readlimit
- マーク位置が無効になる前に読み込み可能な最大バイト数FilterInputStream.in
,
reset()
public void reset() throws IOException
mark
メソッドが呼び出されたときのマーク位置に再設定します。
LineNumberInputStream
の reset
メソッドは、まず行番号を mark
メソッドが呼び出された時点の値にリセットし、それから基礎入力ストリームの reset
メソッドを呼び出します。
ストリームのマークは、ストリームに何が含まれているかをチェックするために、少しデータを先読みするために使われます。これをもっとも容易に実行する方法は、一般的なパーサを呼び出すことです。 ストリームがパーサで取り扱えるタイプであれば、これですべてうまく行きます。ストリームがこのようなタイプではない場合は、パーサが失敗した場所で例外を発生させます。readlimit バイトの範囲内でこれが発生した場合は、例外を検知した外部コードがストリームをリセットして、別なパーサで再試行することができます。
FilterInputStream.in
,
mark(int)
|
Java プラットフォーム 1.2 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |