クラス名と 引数になるObject の配列から、
createInstance() によって新しいインスタンスを作り出す
ユーティリティクラス。
-- revision history --
$Log: Factory.java,v $
Revision 1.0 2002/10/01 00:00:00 dangan
first edition
add to version control
このビット出力ストリームにバッファリングされている
8ビット単位のデータを全て出力先に出力する。
8ビットに満たないデータは出力されないことに注意。
接続された出力ストリームに蓄えられたデータを全て出力する
ように指示する。
現在書き込み中のエントリのデータを強§的に出力先に書き出す。
これは PostLzssEncoder, LzssOutputStream の規約どおり
flush() しなかった場合とは別のデータを出力する。
(大抵の場合は 単に圧縮率が低下するだけである。)
flush は二つの動作を行う。
一つは現在書き込み中のエントリのデータを
一時退避機構に送りこむように指示する。
これは PostLzssDecoder、LzssOutputStream
の規約どおり flush() しなかった場合と
同じデータが出力される事を保証しない。
もう一つは 実際の出力先を flush() する。
現在書き込み中のエントリのデータを強§的に出力先に書き出す。
これは PostLzssEncoder, LzssOutputStream の規約どおり
flush() しなかった場合とは別のデータを出力する。
(大抵の場合は 単に圧縮率が低下するだけである。)
圧縮機構に書き込まれた全てのデータを
接続された PostLzssEncoder に出力し、
接続された PostLzssEncoder を flush() する。
このとき、出力するデータの終端付近では
検索に search() を使用するため圧縮速度が低下する。
また flush() しない場合と比べて圧縮率が変化する。
これは flush() した位置付近ではデータパタンの検索に
MaxMatch に満たないデータパタンを使用するため、
検索結果が不完全になるため。
この圧縮率の変化は、多くの場合圧縮率が少々低下するだけであるが、
例えば次のようなコードは LZ 圧縮を全く行わない。
public void wrongCompress( InputStream in, LzssOutputSteam out ){
int r;
while( 0 <= r = in.read() ){
out.write( r );
out.flush();
}
}
また、このメソッドは PostLzssEncoder.flush() を呼び出すため
flush() しない場合と比べて、出力データが変化する可能性がある。
この PostLzssEncoder にバッファリングされている
全ての 8ビット単位のデータを出力先の OutputStream に出力し、
出力先の OutputStream を flush() する。
このメソッドは圧縮率を変化させない。
この PostLzssEncoder にバッファリングされている
全ての 8ビット単位のデータを出力先の OutputStream に出力し、
出力先の OutputStream を flush() する。
このメソッドは圧縮率を変化させない。
この PostLzssEncoder にバッファリングされている全ての
8ビット単位のデータを出力先の OutputStream に出力し、
出力先の OutputStream を flush() する。
このメソッドは圧縮率を変化させる。
この PostLzssEncoder にバッファリングされている全ての
8ビット単位のデータを出力先の OutputStream に出力し、
出力先の OutputStream を flush() する。
このメソッドは圧縮率を変化させる。
この PostLzssEncoder にバッファリングされている
出力可能なデータを出力先の OutputStream に出力し、
出力先の OutputStream を flush() する。
このメソッドは出力不可能な 最大15バイトのデータを
バッファリングしたまま 出力しない。
このメソッドは圧縮率を変化させない。
この PostLzssEncoder にバッファリングされている
全ての 8ビット単位のデータを出力先の OutputStream に出力し、
出力先の OutputStream を flush() する。
このメソッドは圧縮率を変化させない。
この PostLzssEncoder にバッファリングされている
出力可能なデータを出力先の OutputStream に出力し、
出力先の OutputStream を flush() する。
java.io.OutputStream の メソッド flush() と似ているが、
flush() しなかった場合と flush() した場合の出力については
同じであることを保証しなくて良い。
つまりOutputStream の flush() では同じデータを出力する事を
期待されるような以下の二つのコードは、
PostLzssEncoder においては 別のデータを出力をしても良い。
(1)
PostLzssEncoder out = new ImplementedPostLzssEncoder();
out.writeCode( 0 );
out.writeCode( 0 );
out.writeCode( 0 );
out.close();
(2)
PostLzssEncoder out = new ImplementedPostLzssEncoder();
out.writeCode( 0 );
out.flush();
out.writeCode( 0 );
out.flush();
out.writeCode( 0 );
out.close();
頻度表から ハフマン符号のビット長の表を作成する。
頻度表から ハフマン符号のビット長の表を作成する。
オリジナルのLHAと同じコードを出力する。