全パッケージ  クラス階層  このパッケージ  前項目  次項目  インデックス

クラス java.io.LineNumberInputStream

java.lang.Object
   |
   +----java.io.InputStream
           |
           +----java.io.FilterInputStream
                   |
                   +----java.io.LineNumberInputStream

public class LineNumberInputStream
extends FilterInputStream
注意: LineNumberInputStream の使用は推奨されません。 このクラスはバイトがそのまま正しく文字を表現するという仮定の上で作られています。JDK 1.1 で推奨される文字ストリームへのオペレーションは、行番号をカウントするクラスを含んだ新しい文字ストリームクラスを使うことです。

このクラスは入力ストリームフィルタであり、現在の行番号を監視して保持する機能が追加されています。

行とはバイトの連なりであり、その最後に復帰文字('\r')か、改行文字('\n')か、または復帰文字の直後に改行文字が現れます。これら3種類のケースにおいて、行を終了させる文字は一個の改行文字として返されます。

行番号は 0 から始まり、read が改行文字を返すたびに 1 ずつ増えて行きます。

参照:
LineNumberReader

Constructor Index

 o LineNumberInputStream(InputStream )
指定された入力ストリームから読み込む新しい行番号付き入力ストリームを作成する。

Method Index

 o available()
ブロッキングを発生させることなく入力ストリームから読み込むことのできるバイト数を返す。
 o getLineNumber()
現在の行番号を返す。
 o mark(int)
入力ストリームの現在位置にマークを付ける。
 o read()
入力ストリームから次のバイトを読み込む。
 o read(byte[], int, int)
入力ストリームからバイト配列へ最大 b.length バイトのデータを読み込む。
 o reset()
入力ストリーム上で最後に mark メソッドが呼び出された時点のマーク位置へストリームを再設定する。
 o setLineNumber(int)
指定された引数に行番号をセットする。
 o skip(long)
入力ストリームからのデータを n バイトだけスキップしてその範囲のデータを捨てる。

Constructors

 o LineNumberInputStream
  public LineNumberInputStream(InputStream in)
指定された入力ストリームから読み込む新しい行番号付き入力ストリームを作成します。

パラメータ:
in - 下層の入力ストリーム。

Methods

 o read
 public int read() throws IOException
入力ストリームから次のバイトデータを読み込みます。バイトの値は 0 から 255 の値をとる int として返されます。ストリームの終端に達して読み込むデータが存在しない場合は -1 を返します。このメソッドはデータが読み込み可能になるか、ストリームの終端が検出されるか、または例外がスローされるまでブロックします。

LineNumberInputStreamread メソッドはその下層入力ストリームの read メソッドを呼び出します。入力に現れる復帰文字と改行文字をチェックして適切な行番号を保ちます。復帰文字と復帰+改行文字は1個の改行文字へ付け替えられます。

返り値:
次のバイトデータ。ストリームの終端に達した場合は -1
例外: IOException
I/O エラーが発生した場合。
オーバーライド:
FilterInputStreamクラスの read
参照:
in, getLineNumber
 o read
 public int read(byte b[],
                 int off,
                 int len) throws IOException
入力ストリームからバイト配列へ最大 len バイトのデータを読み込みます。このメソッドは入力が可能になるまでブロックします。

LineNumberInputStreamread メソッドは引数を取らない read メソッドを繰り返し呼び出して配列に書き込みます

パラメータ:
b - データが読み込まれるバッファ。
off - データの開始位置を示すオフセット。
len - 読み込むバイトの最大数。
返り値:
バッファに読み込まれた全バイト数。ストリームの終端に達して読み込むデータが存在しなかった場合は -1
例外: IOException
I/O エラーが発生した場合。
オーバーライド:
FilterInputStream クラスの read
参照:
read
 o setLineNumber
  public void setLineNumber(int lineNumber)
指定された引数に行番号をセットします。

パラメータ:
lineNumber - 新しい行番号。
 o getLineNumber
  public int getLineNumber()
現在の行番号を返します。

返り値:
行番号の現在値。
 o skip
 public long skip(long n) throws IOException
入力ストリームからのデータを n バイトだけスキップしてその範囲のデータを捨てます。種々の理由により skip メソッドは指定されたよりも小さな(0 の場合もあり)バイト数しかスキップしないことがあります。実際にスキップしたバイト数が返されます。

LineNumberInputStreamskip メソッドは長さ n のバイト配列を作成して、そこに n バイトのデータを書き終えるか、またはストリームの終端に達するまで読み込みを続けます。

パラメータ:
n - スキップするバイト数。
返り値:
実際にスキップされたバイト数。
例外: IOException
I/O エラーが発生した場合。
オーバーライド:
FilterInputStream クラスの skip
 o available
 public int available() throws IOException
ブロッキングを発生することなしにこの入力から読み込むことのできるバイト数を返します。

下層の入力ストリームからブロッキングの発生なしに k 個の文字を入力可能だったとすると、LineNumberInputStreamがブロッキングなしに読み込み可能な文字数は k/2 となることに注意してください。これは、下層入力ストリームからの k個の文字は k/2 対の '\r''\n' である可能性があり、これが k/2 個の '\n' 文字に変換されるかも知れないからです。

返り値:
ブロッキングを発生することなしに入力から読み込むことのできるバイト数。
例外: IOException
I/O エラーが発生した場合。
オーバーライド:
FilterInputStream クラスの available
参照:
in
 o mark
  public void mark(int readlimit)
入力ストリームの現在位置にマークを付けます。これに続いて resetメソッドを呼び出すと最後にマークを付けられた位置にストリームを再設定しますから、次回の読み込み操作は同じバイトから読み込むことになります。

LineNumberInputStreammark メソッドは private 変数に現在の行番号を記録してから、下層入力ストリームの mark メソッドを呼び出します。

パラメータ:
readlimit - マーク位置が無効になる前に読み込み可能な最大バイト数。
オーバーライド:
FilterInputStream クラスの mark
参照:
in, reset
 o reset
 public void reset() throws IOException
入力ストリームへ最後に mark メソッドが呼び出されたときのマーク位置へこのストリームの位置を再設定します。

LineNumberInputStreamreset メソッドはまず行番号を mark メソッドが呼び出された時点の値にリセットし、それから下層入力ストリームの reset メソッドを呼び出します。

ストリームのマークは、ストリームに何が含まれているかをチェックするために少しデータを先読みするために使われます。これを最も容易に実行する方法は一般的なパーザを動かすことです。 ストリームがパーザで取り扱えるタイプならば、これですべてうまく行きます。 ストリームがこのようなタイプではない場合は、パーザが失敗した場所で例外を発生します。もし readlimit バイトの範囲内でこれが発生した場合は、例外を検知した外部コードがストリームをリセットして、別なパーザで再トライすることができます。

例外: IOException
I/O エラーが発生した場合。
オーバーライド:
FilterInputStream クラスの reset
参照:
in, mark

全パッケージ  クラス階層  このパッケージ  前項目  次項目  インデックス