JavaTM 2 Platform
Std. Ed. v1.3

java.io
クラス LineNumberInputStream

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

推奨されていません。 このクラスは、バイトが適切に文字を表現するという不正確な仮定をします。JDK 1.1 以降、文字ストリームの処理には、行番号をカウントするためのクラスが含まれている新しい文字ストリームクラスを使用するのが適切です。

public class LineNumberInputStream
extends FilterInputStream

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

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

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

導入されたバージョン:
JDK1.0
関連項目:
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
 

コンストラクタの詳細

LineNumberInputStream

public LineNumberInputStream(InputStream in)
推奨されていません。 
指定された入力ストリームから読み込む、新しい行番号付き入力ストリームを作成します
パラメータ:
in - 基本となる入力ストリーム
メソッドの詳細

read

public int read()
         throws IOException
推奨されていません。 
この入力ストリームから、データの次のバイトを読み込みます。そのバイトは、0255 の範囲の int として返されます。ストリームの終わりに達してバイトがない場合は、値 -1 が返されます。このメソッドは、入力データが読み込まれるようになるか、ストリームの終わりが検出されるか、または例外がスローされるまでブロックします。

LineNumberInputStreamread メソッドは、その基本となる入力ストリームの read メソッドを呼び出します。入力に現れる復帰文字と改行文字をチェックして適切な行番号を保ちます。復帰文字と復帰+改行文字は 1 個の改行文字に変換されます。

オーバーライド:
クラス FilterInputStream 内の read
戻り値:
データの次のバイト。ストリームの終わりに達した場合は -1
例外:
IOException - 入出力エラーが発生した場合
関連項目:
FilterInputStream.in, getLineNumber()

read

public int read(byte[] b,
                int off,
                int len)
         throws IOException
推奨されていません。 
入力ストリームからバイト配列へ最大 len バイトのデータを読み込みます。このメソッドは、入力が可能になるまでブロックします。

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

オーバーライド:
クラス FilterInputStream 内の read
パラメータ:
b - データの読み込み先のバッファ
off - データの開始オフセット
len - 読み込まれる最大バイト数
戻り値:
バッファに読み込まれたバイトの総数。ストリームの終わりに達して読み込むデータがなかった場合は -1
例外:
IOException - 入出力エラーが発生した場合
関連項目:
read()

skip

public long skip(long n)
          throws IOException
推奨されていません。 
入力ストリームからのデータを n バイトだけスキップしてその範囲のデータを破棄します。さまざまな理由から、skip メソッドは、指定されたよりも少ないバイト数 (0 の場合もあり) しかスキップしないことがあります。実際にスキップしたバイト数が返されます。n が負の値の場合、バイトはスキップされません。

LineNumberInputStreamskip メソッドはバイト配列を作成し、n バイトが読み込まれるまで、またはストリームの終わりに達するまで繰り返しその中に読み込みます。

オーバーライド:
クラス FilterInputStream 内の skip
パラメータ:
n - スキップするバイト数
戻り値:
実際にスキップされたバイト数
例外:
IOException - 入出力エラーが発生した場合
関連項目:
FilterInputStream.in

setLineNumber

public void setLineNumber(int lineNumber)
推奨されていません。 
行番号を指定された引数で設定します。
パラメータ:
lineNumber - 新規行番号
関連項目:
getLineNumber()

getLineNumber

public int getLineNumber()
推奨されていません。 
現在の行番号を返します。
戻り値:
現在の行番号
関連項目:
setLineNumber(int)

available

public int available()
              throws IOException
推奨されていません。 
ブロックせずに入力ストリームから読み込むことができるバイト数を返します。

ブロックせずに基本となるの入力ストリームから k 個の文字を読み込み可能な場合、LineNumberInputStream がブロックせずに読み込み可能な文字数は k/2 となる可能性があることに注意してください。これは、基本となる入力ストリームからの k 個の文字が k/2 対の '\r''\n' である可能性もあり、これが k/2 個の '\n' 文字に変換されるかもしれないからです。

オーバーライド:
クラス FilterInputStream 内の available
戻り値:
ブロックせずに入力ストリームから読み込むことができるバイト数
例外:
IOException - 入出力エラーが発生した場合
関連項目:
FilterInputStream.in

mark

public void mark(int readlimit)
推奨されていません。 
入力ストリームの現在位置にマークを設定します。これに続いて reset メソッドを呼び出すと、最後にマークが設定された位置にストリームを再設定するため、次回の読み込み操作では同じバイトから読み込むことになります。

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

オーバーライド:
クラス FilterInputStream 内の mark
パラメータ:
readlimit - マーク位置が無効になる前に読み込み可能なバイトの最大リミット
関連項目:
FilterInputStream.in, reset()

reset

public void reset()
           throws IOException
推奨されていません。 
このストリームの位置を、入力ストリームで最後に mark メソッドが呼び出されたときのマーク位置に再設定します。

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

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

オーバーライド:
クラス FilterInputStream 内の reset
例外:
IOException - 入出力エラーが発生した場合
関連項目:
FilterInputStream.in, mark(int)

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.