クラス名と 引数になる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と同じコードを出力する。