|
LHA Library for Java | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectjava.io.OutputStream
jp.gr.java_conf.dangan.util.lha.LhaOutputStream
public class LhaOutputStream
接続されたストリームに 圧縮データを出力するためのユーティリティクラス。
java.util.zip.ZipOutputStream と似たインターフェイスを持つように作った。
Zipと違い、LHAの出力は本来 2パスであるため、1つのエントリを圧縮するまで、
エントリ全体のデータを持つ一時記憶領域が必要となる。
そのような記憶領域を使用したくない場合は LhaRetainedOutputStream か
LhaImmediateOutputStream を使用する事。
-- revision history --
$Log: LhaOutputStream.java,v $
Revision 1.1.2.2 2005/05/03 07:48:40 dangan
[bug fix]
圧縮法識別子 -lhd- を指定した時、圧縮後サイズがオリジナルサイズを下回らないため、
必ず -lh0- に再設定されていた。そのためディレクトリ情報を格納できなかった。
Revision 1.1.2.1 2005/04/29 02:14:28 dangan
[bug fix]
圧縮法識別子 -lhd- を指定した時、圧縮後サイズがオリジナルサイズを下回らないため、
必ず -lh0- に再設定されていた。そのためディレクトリ情報を格納できなかった。
Revision 1.1 2002/12/08 00:00:00 dangan
[maintenance]
LhaConstants から CompressMethod へのクラス名の変更に合わせて修正。
Revision 1.0 2002/08/05 00:00:00 dangan
add to version control
[change]
コンストラクタから 引数に String encode を取るものを廃止、
Properties を引数に取るものを追加。
[maintenance]
ソース整備
タブ廃止
ライセンス文の修正
| Constructor Summary | |
|---|---|
LhaOutputStream(java.io.OutputStream out)
out に 圧縮データを出力するOutputStreamを構築する。 一時退避機構はメモリを使用する。このため、 圧縮時データ量がメモリ量を超えるようなファイルは圧縮できない。 各圧縮形式に対応した符号器の生成式等を持つプロパティには LhaProperty.getProperties() で得られたプロパティが使用される。 |
|
LhaOutputStream(java.io.OutputStream out,
java.util.Properties property)
out に 圧縮データを出力するOutputStreamを構築する。 一時退避機構はメモリを使用する。このため、 圧縮時データ量がメモリ量を超えるようなファイルは圧縮できない。 |
|
LhaOutputStream(java.io.OutputStream out,
java.io.RandomAccessFile file)
out に 圧縮データを出力するOutputStreamを構築する。 各圧縮形式に対応した符号器の生成式等を持つプロパティには LhaProperty.getProperties() で得られたプロパティが使用される。 |
|
LhaOutputStream(java.io.OutputStream out,
java.io.RandomAccessFile file,
java.util.Properties property)
out に 圧縮データを出力するOutputStreamを構築する。 |
|
| Method Summary | |
|---|---|
void |
close()
出力先に全てのデータを出力し、 ストリームを閉じる。 |
void |
closeEntry()
現在出力中のエントリを閉じ、次のエントリが出力可能な状態にする。 圧縮に失敗した(圧縮後サイズが圧縮前サイズを上回った)場合、 解凍し無圧縮で格納する。エントリのサイズが大きい場合、 この処理にはかなりの時間がかかる。 |
void |
flush()
flush は二つの動作を行う。 一つは現在書き込み中のエントリのデータを 一時退避機構に送りこむように指示する。 これは PostLzssDecoder、LzssOutputStream の規約どおり flush() しなかった場合と 同じデータが出力される事を保証しない。 もう一つは 実際の出力先を flush() する。 |
void |
putNextEntry(LhaHeader header)
新しいエントリを書き込むようにストリームを設定する。 このメソッドは 既に圧縮済みのエントリの場合は putNextEntryAlreadyCompressed(), 未だに圧縮されていない場合は putNextEntryNotYetCompressed() を呼び出す。 圧縮されているかの判定は、 header.getCompressedSize() header.getOriginalSize() header.getCRC() のどれか一つでも LhaHeader.UNKNOWN であれば未だに圧縮されていないとする。 |
void |
putNextEntryAlreadyCompressed(LhaHeader header)
既に圧縮済みのエントリを書きこむようにストリームを設定する。 圧縮済みなので、一時退避機構を経ずに直接出力先に出力される。 圧縮済みデータが正しい事は、呼び出し側が保証する事。 |
void |
putNextEntryNotYetCompressed(LhaHeader header)
未だに圧縮されていないエントリを書きこむようにストリームを設定する。 header に OriginalSize, CompressedSize, CRCが指定されていても無視される。 |
void |
write(byte[] buffer)
現在のエントリに bufferの内容を全て書き出す。 |
void |
write(byte[] buffer,
int index,
int length)
現在のエントリに bufferの indexから lengthバイトのデータを書き出す。 |
void |
write(int data)
現在のエントリに1バイトのデータを書きこむ。 |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public LhaOutputStream(java.io.OutputStream out)
out - 圧縮データを出力するストリームLhaProperty.getProperties()
public LhaOutputStream(java.io.OutputStream out,
java.util.Properties property)
out - 圧縮データを出力するストリームproperty - 各圧縮形式に対応した符号器の生成式等が含まれるプロパティLhaProperty
public LhaOutputStream(java.io.OutputStream out,
java.io.RandomAccessFile file)
out - 圧縮データを出力するストリームfile - RandomAccessFile のインスタンス。LhaProperty.getProperties()
public LhaOutputStream(java.io.OutputStream out,
java.io.RandomAccessFile file,
java.util.Properties property)
out - 圧縮データを出力するストリームfile - RandomAccessFile のインスタンス。property - 各圧縮形式に対応した符号器の生成式等が含まれるプロパティ
java.io.UnsupportedEncodingException - encode がサポートされない場合LhaProperty| Method Detail |
|---|
public void write(int data)
throws java.io.IOException
write in class java.io.OutputStreamdata - 書きこむデータ
java.io.IOException - 入出力エラーが発生した場合。
public void write(byte[] buffer)
throws java.io.IOException
write in class java.io.OutputStreambuffer - 書き出すデータの入ったバイト配列
java.io.IOException - 入出力エラーが発生した場合。
public void write(byte[] buffer,
int index,
int length)
throws java.io.IOException
write in class java.io.OutputStreambuffer - 書き出すデータの入ったバイト配列index - buffer内の書き出すべきデータの開始位置length - データのバイト数
java.io.IOException - 入出力エラーが発生した場合。
public void flush()
throws java.io.IOException
flush in interface java.io.Flushableflush in class java.io.OutputStreamjava.io.IOException - 入出力エラーが発生した場合PostLzssEncoder.flush(),
LzssOutputStream.flush()
public void close()
throws java.io.IOException
close in interface java.io.Closeableclose in class java.io.OutputStreamjava.io.IOException - 入出力エラーが発生した場合
public void putNextEntry(LhaHeader header)
throws java.io.IOException
header - 書きこむエントリについての情報を持つ
LhaHeaderのインスタンス。
java.io.IOException - 入出力エラーが発生した場合
public void putNextEntryAlreadyCompressed(LhaHeader header)
throws java.io.IOException
header - 書きこむエントリについての情報を持つ
LhaHeaderのインスタンス。
java.io.IOException - 入出力エラーが発生した場合
java.lang.IllegalArgumentException -
public void putNextEntryNotYetCompressed(LhaHeader header)
throws java.io.IOException
header - 書きこむエントリについての情報を持つ
LhaHeaderのインスタンス。
java.io.IOException - 入出力エラーが発生した場合
public void closeEntry()
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 | |||||||||