LHA Library for Java

jp.gr.java_conf.dangan.util.lha
Class LzssInputStream

java.lang.Object
  extended by java.io.InputStream
      extended by jp.gr.java_conf.dangan.util.lha.LzssInputStream
All Implemented Interfaces:
java.io.Closeable

public class LzssInputStream
extends java.io.InputStream

LZSS 圧縮されたデータを解凍しながら供給する入力ストリーム。

 -- revision history --
 $Log: LzssInputStream.java,v $
 Revision 1.1  2002/12/08 00:00:00  dangan
 [bug fix]
     mark() 内で接続された PreLzssDecoder の 
     mark に与える readLimit の計算が甘かったのを修正。

 Revision 1.0  2002/07/25 00:00:00  dangan
 add to version control
 [bug fix]
     available() のスペルミスを修正。
     skip() において decode() を呼ぶ判定条件が間違っていたのを修正。
 [maintenance]
     ソース整備
     タブ廃止
     ライセンス文の修正

 

Version:
$Revision: 1.1 $
Author:
$Author: dangan $

Constructor Summary
LzssInputStream(PreLzssDecoder decoder)
          in から LZSS圧縮データ の入力を受けて、 解凍されたデータを提供する入力ストリームを構築する。 このコンストラクタから生成された LzssInputStreamは -lh1-等の解凍データの最後のデータを読み込んだ後、 次のデータの読み取りで必ずEndOfStreamに達するとは 限らないデータを正常に復元できない(終端以降にゴミ データがつく可能性がある)。
LzssInputStream(PreLzssDecoder decoder, long length)
          in から LZSS圧縮データ の入力を受けて、 解凍されたデータを提供する入力ストリームを構築する。
 
Method Summary
 int available()
          接続された入力ストリームからブロックしないで 読み込むことのできるバイト数を得る。
 void close()
          この入力ストリームを閉じ、使用していた 全てのリソースを開放する。
 void mark(int readLimit)
          接続された入力ストリームの現在位置にマークを設定し、 reset() メソッドでマークした時点の 読み込み位置に 戻れるようにする。
InputStream の mark() と違い、 readLimit で設定した 限界バイト数より前にマーク位置が無効になる可能性がある。 ただし、readLimit を無視して無限に reset() 可能な InputStream と接続している場合は readLimit に どのような値を設定されても reset() で必ずマーク位置に復旧できる事を保証する。
 boolean markSupported()
          接続された入力ストリームが mark() と reset() を サポートするかを得る。
 int read()
          コンストラクタで指定された PreLzssDecoder の 圧縮されたデータを解凍し、1バイトのデータを供給する。
 int read(byte[] buffer)
          コンストラクタで指定された PreLzssDecoder の 圧縮されたデータを解凍し、bufferを満たすように 解凍されたデータを読み込む。
 int read(byte[] buffer, int index, int length)
          コンストラクタで指定された PreLzssDecoder の 圧縮されたデータを解凍し、buffer の index から length バイトのデータを読み込む。
 void reset()
          接続された入力ストリームの読み込み位置を最後に mark() メソッドが呼び出されたときの位置に設定する。
 long skip(long length)
          解凍されたデータを lengthバイト読み飛ばす。
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

LzssInputStream

public LzssInputStream(PreLzssDecoder decoder)
in から LZSS圧縮データ の入力を受けて、 解凍されたデータを提供する入力ストリームを構築する。 このコンストラクタから生成された LzssInputStreamは -lh1-等の解凍データの最後のデータを読み込んだ後、 次のデータの読み取りで必ずEndOfStreamに達するとは 限らないデータを正常に復元できない(終端以降にゴミ データがつく可能性がある)。

Parameters:
decoder - LZSS圧縮データ供給ストリーム

LzssInputStream

public LzssInputStream(PreLzssDecoder decoder,
                       long length)
in から LZSS圧縮データ の入力を受けて、 解凍されたデータを提供する入力ストリームを構築する。

Parameters:
decoder - LZSS圧縮データ供給ストリーム
length - 解凍後のサイズ
Method Detail

read

public int read()
         throws java.io.IOException
コンストラクタで指定された PreLzssDecoder の 圧縮されたデータを解凍し、1バイトのデータを供給する。

Specified by:
read in class java.io.InputStream
Returns:
解凍された 1バイトのデータ
Throws:
java.io.IOException - 入出力エラーが発生した場合

read

public int read(byte[] buffer)
         throws java.io.IOException
コンストラクタで指定された PreLzssDecoder の 圧縮されたデータを解凍し、bufferを満たすように 解凍されたデータを読み込む。

Overrides:
read in class java.io.InputStream
Parameters:
buffer - データを読み込むバッファ
Returns:
読みこんだデータ量
Throws:
java.io.IOException - 入出力エラーが発生した場合

read

public int read(byte[] buffer,
                int index,
                int length)
         throws java.io.IOException
コンストラクタで指定された PreLzssDecoder の 圧縮されたデータを解凍し、buffer の index から length バイトのデータを読み込む。

Overrides:
read in class java.io.InputStream
Parameters:
buffer - データを読み込むバッファ
index - buffer 内のデータ読みこみ開始位置
length - 読み込むデータ量
Returns:
読みこんだデータ量
Throws:
java.io.IOException - 入出力エラーが発生した場合

skip

public long skip(long length)
          throws java.io.IOException
解凍されたデータを lengthバイト読み飛ばす。

Overrides:
skip in class java.io.InputStream
Parameters:
length - 読み飛ばすデータ量(単位はバイト)
Returns:
実際に読み飛ばしたバイト数
Throws:
java.io.IOException - 入出力エラーが発生した場合

mark

public void mark(int readLimit)
接続された入力ストリームの現在位置にマークを設定し、 reset() メソッドでマークした時点の 読み込み位置に 戻れるようにする。
InputStream の mark() と違い、 readLimit で設定した 限界バイト数より前にマーク位置が無効になる可能性がある。 ただし、readLimit を無視して無限に reset() 可能な InputStream と接続している場合は readLimit に どのような値を設定されても reset() で必ずマーク位置に復旧できる事を保証する。

Overrides:
mark in class java.io.InputStream
Parameters:
readLimit - マーク位置に戻れる限界のバイト数。 このバイト数を超えてデータを読み 込んだ場合 reset()できなくなる可 能性がある。
See Also:
PreLzssDecoder.mark(int)

reset

public void reset()
           throws java.io.IOException
接続された入力ストリームの読み込み位置を最後に mark() メソッドが呼び出されたときの位置に設定する。

Overrides:
reset in class java.io.InputStream
Throws:
java.io.IOException - 入出力エラーが発生した場合

markSupported

public boolean markSupported()
接続された入力ストリームが mark() と reset() を サポートするかを得る。

Overrides:
markSupported in class java.io.InputStream
Returns:
ストリームが mark() と reset() を サポートする場合は true。
サポートしない場合は false。

available

public int available()
              throws java.io.IOException
接続された入力ストリームからブロックしないで 読み込むことのできるバイト数を得る。

Overrides:
available in class java.io.InputStream
Returns:
ブロックしないで読み出せるバイト数。
Throws:
java.io.IOException - 入出力エラーが発生した場合

close

public void close()
           throws java.io.IOException
この入力ストリームを閉じ、使用していた 全てのリソースを開放する。

Specified by:
close in interface java.io.Closeable
Overrides:
close in class java.io.InputStream
Throws:
java.io.IOException - 入出力エラーが発生した場合

LHA Library for Java

When you found typographical errors or omissions, Please mail to cqw10305@nifty.com
The company name and product name which are used in this document, it is the trademark or registered trademark of each company generally.
Copyright © 2001-2002 Michel Ishizuka. All Rights Reserved.