|
LHA Library for Java | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectjava.io.InputStream
jp.gr.java_conf.dangan.io.BitInputStream
public class BitInputStream
ビット入力のためのユーティリティクラス。
-- revision history --
$Log: BitInputStream.java,v $
Revision 1.5 2002/12/07 00:00:00 dangan
[maintenance]
ソース整備
Revision 1.4 2002/11/15 00:00:00 dangan
[improvement]
prefetchBits() が 32bit の読み込みを保証するように修正
[change]
メソッド名の変更
prefetchBit -> peekBit
prefetchBoolean -> peekBoolean
prefetchBits -> peekBits
Revision 1.3 2002/11/02 00:00:00 dangan
[bug fix]
available() availableBits() で
ブロックせずに読み込める量よりも大きい値を返していた。
Revision 1.2 2002/09/05 00:00:00 dangan
[change]
EndOfStream に達した後の read( new byte[0] ) や
read( byte[] buf, int off, 0 ) の戻り値を
InputStream と同じく 0 になるようにした
Revision 1.1 2002/09/04 00:00:00 dangan
[bug fix]
skip( len ) と skipBits( len ) で len が 0 未満のとき
正しく処理できていなかった。
Revision 1.0 2002/09/03 00:00:00 dangan
add to version control
[bug fix]
mark() で 接続された in に渡す readLimit の計算が甘かったため、
要求された readLimit に達する前にマーク位置が破棄される事があった。
EndOfStream に達した後の skip() および skip( 0 ) が -1 を返していた。
[maintenance]
タブ廃止
ライセンス文の修正
| Constructor Summary | |
|---|---|
BitInputStream(java.io.InputStream in)
入力ストリーム in からのデータをビット単位で 読み込めるようなストリームを構築する。 |
|
BitInputStream(java.io.InputStream in,
int CacheSize)
入力ストリーム in からのデータをビット単位で 読み込めるようなストリームを構築する。 |
|
| Method Summary | |
|---|---|
int |
available()
接続された入力ストリームからブロックしないで 読み込むことのできるバイト数を得る。 |
int |
availableBits()
接続された入力ストリームからブロックしないで 読み込むことのできるビット数を得る。 |
void |
close()
この入力ストリームを閉じ、 使用していたリソースを開放する。 |
void |
mark(int readLimit)
接続された入力ストリームの現在位置にマークを設定し、 reset() メソッドでマークした時点の 読み込み位置に 戻れるようにする。 |
boolean |
markSupported()
接続された入力ストリームが mark() と reset() を サポートするかを得る。 |
int |
peekBit()
読み込み位置を変えずに 1ビットのデータを先読みする。 |
int |
peekBits(int count)
読み込み位置を変えずに count ビットのデータを先読みする。 戻り値が int型であることからもわかるように 最大有効ビット数は 32ビットである。 EndOfStream 付近を除いて、先読み出来ることが保障されるのは 32ビットである。(ビットバッファの大きさが 32ビットであるため) もし 32ビット以上の先読み機能が必須となる場合は その都度 mark()、readBits()、reset() を繰り返すか、 このクラスを使用することを諦めること。 |
boolean |
peekBoolean()
読み込み位置を変えずに 1ビットのデータを 真偽値として先読みする。 |
int |
read()
接続されたストリームから 8ビットのデータを読み込む。 |
int |
read(byte[] buffer)
接続された入力ストリームから バイト配列 buffer を 満たすようにデータを読み込む。 データは必ずしも buffer を満たすとは限らないことに注意。 |
int |
read(byte[] buffer,
int index,
int length)
接続された入力ストリームから バイト配列 buffer の index で指定された位置から length バイトのデータを 読み込む。 このメソッドは lengthバイト読み込むか、 EndOfStream に到達するまでブロックする。 データは必ずしも length バイト読み込まれるとは限ら ないことに注意。 |
int |
readBit()
接続された入力ストリームから 1ビットのデータを 読み込む。 |
int |
readBits(int count)
接続された入力ストリームから count ビットのデータを 読み込む。 戻り値が int値である事からも判るように 読み込むことのできる 最大有効ビット数は 32ビットで あるが、count は32以上の値を設定してもチェックを 受けないため それ以上の値を設定した場合は ビット データが読み捨てられる。 たとえば readBits( 33 ) としたときは まず1ビットの データを読み捨て、その後の 32ビットのデータを返す。 また count に 0以下の数字を設定して呼び出した場合、 データを読み込む動作を伴わないため 戻り値は 常に0、 EndOfStream に達していても EOFException を 投げない点に注意すること。 |
boolean |
readBoolean()
接続された入力ストリームから 1ビットのデータを 真偽値として読み込む。 |
void |
reset()
接続された入力ストリームの読み込み位置を最後に mark() メソッドが呼び出されたときの位置に設定する。 |
long |
skip(long length)
接続された入力ストリームのデータを length バイト 読み飛ばす。 このメソッドは lengthバイト読み飛ばすか、 EndOfStream に到達するまでブロックする。 データは必ずしも length バイト読み飛ばされるとは限ら ないことに注意。 |
int |
skipBits(int count)
接続されたストリームから count ビットのデータを 読み飛ばす。 |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public BitInputStream(java.io.InputStream in)
in - 入力ストリーム
public BitInputStream(java.io.InputStream in,
int CacheSize)
in - 入力ストリームCacheSize - バッファサイズ| Method Detail |
|---|
public int read()
throws java.io.IOException
read in class java.io.InputStreamjava.io.IOException - 接続された入力ストリームで
入出力エラーが発生した場合
BitDataBrokenException - EndOfStreamに達したため
要求されたビット数のデータの
読み込みに失敗した場合。
public int read(byte[] buffer)
throws java.io.IOException
read in class java.io.InputStreambuffer - 読み込まれたデータを格納するためのバイト配列
java.io.IOException - 接続された入力ストリームで
入出力エラーが発生した場合
BitDataBrokenException - EndOfStreamに達したため
要求されたビット数のデータの
読み込みに失敗した場合。
public int read(byte[] buffer,
int index,
int length)
throws java.io.IOException
read in class java.io.InputStreambuffer - 読み込まれたデータを格納するためのバイト配列index - buffer内のデータ読み込み開始位置length - bufferに読み込むデータ量
java.io.IOException - 接続された入力ストリームで
入出力エラーが発生した場合
BitDataBrokenException - EndOfStreamに達したため
要求されたビット数のデータの
読み込みに失敗した場合。
public long skip(long length)
throws java.io.IOException
skip in class java.io.InputStreamlength - 読み飛ばすバイト数。java.io.IOException - 接続された入力ストリームで
入出力エラーが発生した場合public void mark(int readLimit)
mark in class java.io.InputStreamreadLimit - マーク位置に戻れる限界のバイト数。
このバイト数を超えてデータを読み
込んだ場合 reset()できなくなる可
能性がある。
public void reset()
throws java.io.IOException
reset in class java.io.InputStreamjava.io.IOException - public boolean markSupported()
markSupported in class java.io.InputStream
public int available()
throws java.io.IOException
available in class java.io.InputStreamjava.io.IOException - 接続された入力ストリームで
入出力エラーが発生した場合
public void close()
throws java.io.IOException
close in interface java.io.Closeableclose in class java.io.InputStreamjava.io.IOException - 接続された入力ストリームで
入出力エラーが発生した場合
public int readBit()
throws java.io.IOException
java.io.IOException - 接続された入力ストリームで
入出力エラーが発生した場合
public boolean readBoolean()
throws java.io.IOException
java.io.EOFException - 既にEndOfStreamに達していた場合
java.io.IOException - 接続された入力ストリームで
入出力エラーが発生した場合
public int readBits(int count)
throws java.io.IOException
count - 読み込むデータのビット数
java.io.IOException - 接続された入力ストリームで
入出力エラーが発生した場合
java.io.EOFException - 既にEndOfStreamに達していた場合
BitDataBrokenException - 読み込み途中で EndOfStreamに達したため
要求されたビット数のデータの読み込み
に失敗した場合。
public int skipBits(int count)
throws java.io.IOException
count - 読み飛ばしてほしいビット数
java.io.IOException - 接続された入力ストリームで
入出力エラーが発生した場合
public int peekBit()
throws java.io.IOException
java.io.IOException - 接続された入力ストリームで
入出力エラーが発生した場合
public boolean peekBoolean()
throws java.io.IOException
java.io.EOFException - 既にEndOfStreamに達していた場合
java.io.IOException - 接続された入力ストリームで
入出力エラーが発生した場合
public int peekBits(int count)
throws java.io.IOException
count - 読み込むビット数
java.io.EOFException - 既にEndOfStreamに達していた場合
java.io.IOException - 接続された入力ストリームで
入出力エラーが発生した場合
NotEnoughBitsException - count が先読み可能な範囲外の場合
public int availableBits()
throws java.io.IOException
java.io.IOException - 接続された入力ストリームで
入出力エラーが発生した場合
|
LHA Library for Java | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||