全パッケージ クラス階層 このパッケージ 前項目 次項目 インデックス
java.lang.Object
   |
   +----java.io.InputStream
           |
           +----java.io.FilterInputStream
                   |
                   +----java.io.LineNumberInputStream
このクラスは入力ストリームフィルタであり、現在の行番号を監視して保持する機能が追加されています。
 行とはバイトの連なりであり、その最後に復帰文字('\r')か、改行文字('\n')か、または復帰文字の直後に改行文字が現れます。これら3種類のケースにおいて、行を終了させる文字は一個の改行文字として返されます。
 
 行番号は 0 から始まり、read が改行文字を返すたびに 1 ずつ増えて行きます。
 
 LineNumberInputStream(InputStream
)
	LineNumberInputStream(InputStream
)
   
 available()
	available()
   getLineNumber()
	getLineNumber()
   mark(int)
	mark(int)
   read()
	read()
   read(byte[], int, int)
	read(byte[], int, int)
  b.length バイトのデータを読み込む。
   reset()
	reset()
  mark メソッドが呼び出された時点のマーク位置へストリームを再設定する。
   setLineNumber(int)
	setLineNumber(int)
   skip(long)
	skip(long)
  n バイトだけスキップしてその範囲のデータを捨てる。
 
 LineNumberInputStream
LineNumberInputStream
public LineNumberInputStream(InputStream in)
 
 read
read
public int read() throws IOException
0 から 255 の値をとる int として返されます。ストリームの終端に達して読み込むデータが存在しない場合は -1 を返します。このメソッドはデータが読み込み可能になるか、ストリームの終端が検出されるか、または例外がスローされるまでブロックします。
 
 
 LineNumberInputStream の read メソッドはその下層入力ストリームの read メソッドを呼び出します。入力に現れる復帰文字と改行文字をチェックして適切な行番号を保ちます。復帰文字と復帰+改行文字は1個の改行文字へ付け替えられます。
-1。
     read
read
 public int read(byte b[],
                 int off,
                 int len) throws IOException
len バイトのデータを読み込みます。このメソッドは入力が可能になるまでブロックします。
 
  LineNumberInputStream の read メソッドは引数を取らない read メソッドを繰り返し呼び出して配列に書き込みます
-1 。
     setLineNumber
setLineNumber
public void setLineNumber(int lineNumber)
 getLineNumber
getLineNumber
public int getLineNumber()
 skip
skip
public long skip(long n) throws IOException
n バイトだけスキップしてその範囲のデータを捨てます。種々の理由により skip メソッドは指定されたよりも小さな(0 の場合もあり)バイト数しかスキップしないことがあります。実際にスキップしたバイト数が返されます。
 
 LineNumberInputStream の skip メソッドは長さ n のバイト配列を作成して、そこに n バイトのデータを書き終えるか、またはストリームの終端に達するまで読み込みを続けます。
 available
available
public int available() throws IOException
 下層の入力ストリームからブロッキングの発生なしに k 個の文字を入力可能だったとすると、LineNumberInputStreamがブロッキングなしに読み込み可能な文字数は k/2 となることに注意してください。これは、下層入力ストリームからの k個の文字は k/2 対の '\r' と '\n' である可能性があり、これが k/2 個の '\n' 文字に変換されるかも知れないからです。
 mark
mark
public void mark(int readlimit)
resetメソッドを呼び出すと最後にマークを付けられた位置にストリームを再設定しますから、次回の読み込み操作は同じバイトから読み込むことになります。 
 LineNumberInputStream の mark メソッドは private 変数に現在の行番号を記録してから、下層入力ストリームの mark メソッドを呼び出します。
 reset
reset
public void reset() throws IOException
mark メソッドが呼び出されたときのマーク位置へこのストリームの位置を再設定します。
 
 LineNumberInputStream の reset メソッドはまず行番号を mark メソッドが呼び出された時点の値にリセットし、それから下層入力ストリームの reset メソッドを呼び出します。
 
ストリームのマークは、ストリームに何が含まれているかをチェックするために少しデータを先読みするために使われます。これを最も容易に実行する方法は一般的なパーザを動かすことです。 ストリームがパーザで取り扱えるタイプならば、これですべてうまく行きます。 ストリームがこのようなタイプではない場合は、パーザが失敗した場所で例外を発生します。もし readlimit バイトの範囲内でこれが発生した場合は、例外を検知した外部コードがストリームをリセットして、別なパーザで再トライすることができます。
全パッケージ クラス階層 このパッケージ 前項目 次項目 インデックス