|
LHA Library for Java | ||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||||
java.lang.Objectjava.io.OutputStream
jp.gr.java_conf.dangan.util.lha.LhaImmediateOutputStream
接続されたRandomAccessFileに 圧縮データを出力するためのユーティリティクラス。
java.util.zip.ZipOutputStream と似たインターフェイスを持つように作った。
圧縮失敗時( 圧縮後サイズが圧縮前サイズを上回った場合 )の処理を
手動で行わなければならない。
以下に そのようなコードを示す。
LhaCompressFiles( String arcfile, File[] files ){
LhaImmediateOutputStream lio = new LhaImmediateOutputStream( arcfile );
for( int i = 0 ; i < files.length ; i++ ){
RandomAccessFile raf = new RandomAccessFile( files[i] );
LhaHeader header = new LhaHeader( files[i].getName() );
header.setLastModified( new Date( files.lastModified() ) );
header.setOriginalSize( files.length() );
byte[] buffer = new byte[8192];
int length;
while( 0 <= ( length = raf.read( buffer ) ) ){
lio.write( buffer, 0, length );
}
if( !lio.closeEntry() ){
header.setCompressMethod( CompressMethod.LH0 );
lio.putNextEntry( lhaheader );
raf.seek( 0 );
while( 0 <= ( length = raf.read( buffer ) ) ){
lio.write( buffer, 0, length );
}
lio.closeEntry();
}
lio.close();
}
進捗報告を実装する場合、このような処理をクラス内に隠蔽すると進捗報告は何秒間か
時によっては何十分も応答しなくなる。(例えばギガバイト級のデータを扱った場合)
LhaRetainedOutputStream で発生する、このような事態を避けるために設計されている。
-- revision history --
$Log: LhaImmediateOutputStream.java,v $
Revision 1.2 2002/12/11 02:25:06 dangan
[bug fix]
jdk1.2 でコンパイルできなかった箇所を修正。
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]
ソース整備
タブ廃止
ライセンス文の修正
| コンストラクタの概要 | |
LhaImmediateOutputStream(File filename)
filename のファイルに 圧縮データを出力するOutputStreamを構築する。 |
|
LhaImmediateOutputStream(File filename,
Properties property)
filename のファイルに 圧縮データを出力するOutputStreamを構築する。 |
|
LhaImmediateOutputStream(RandomAccessFile file)
fileに 圧縮データを出力するOutputStreamを構築する。 |
|
LhaImmediateOutputStream(RandomAccessFile file,
Properties property)
fileに 圧縮データを出力するOutputStreamを構築する。 |
|
LhaImmediateOutputStream(String filename)
filename のファイルに 圧縮データを出力するOutputStreamを構築する。 |
|
LhaImmediateOutputStream(String filename,
Properties property)
filename のファイルに 圧縮データを出力するOutputStreamを構築する。 |
|
| メソッドの概要 | |
void |
close()
出力先に全てのデータを出力し、ストリームを閉じる。 |
boolean |
closeEntry()
現在出力中のエントリを閉じ、次のエントリが出力可能な状態にする。 |
void |
flush()
現在書き込み中のエントリのデータを強制的に出力先に書き出す。 |
void |
putNextEntry(LhaHeader header)
新しいエントリを書き込むようにストリームを設定する。 |
void |
putNextEntryAlreadyCompressed(LhaHeader header)
既に圧縮済みのエントリを書きこむようにストリームを設定する。 |
void |
putNextEntryNotYetCompressed(LhaHeader header)
未だに圧縮されていないエントリを書きこむようにストリームを 設定する。 |
void |
write(byte[] buffer)
現在のエントリに bufferの内容を全て書き出す。 |
void |
write(byte[] buffer,
int index,
int length)
現在のエントリに bufferの indexから lengthバイトのデータを書き出す。 |
void |
write(int data)
現在のエントリに1バイトのデータを書きこむ。 |
| クラス java.lang.Object から継承したメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| コンストラクタの詳細 |
public LhaImmediateOutputStream(String filename)
throws FileNotFoundException
filename - 圧縮データを書きこむファイルの名前
FileNotFoundException - filename で与えられたファイルが見つからない場合。
SecurityException - セキュリティマネージャがファイルへのアクセスを許さない場合。LhaProperty.getProperties()
public LhaImmediateOutputStream(String filename,
Properties property)
throws FileNotFoundException
filename - 圧縮データを書きこむファイルの名前property - 各圧縮形式に対応した符号器の生成式等が含まれるプロパティ
FileNotFoundException - filename で与えられたファイルが見つからない場合。
SecurityException - セキュリティマネージャがファイルへのアクセスを許さない場合。LhaProperty
public LhaImmediateOutputStream(File filename)
throws IOException
filename - 圧縮データを書きこむファイルの名前
FileNotFoundException - filename で与えられたファイルが見つからない場合。
SecurityException - セキュリティマネージャがファイルへのアクセスを許さない場合。
IOException - JDK1.2 でコンパイルするためだけに存在する。LhaProperty.getProperties()
public LhaImmediateOutputStream(File filename,
Properties property)
throws IOException
filename - 圧縮データを書きこむファイルの名前property - 各圧縮形式に対応した符号器の生成式等が含まれるプロパティ
FileNotFoundException - filename で与えられたファイルが見つからない場合。
SecurityException - セキュリティマネージャがファイルへのアクセスを許さない場合。
IOException - JDK1.2 でコンパイルするためだけに存在する。LhaPropertypublic LhaImmediateOutputStream(RandomAccessFile file)
file - RandomAccessFile のインスタンス。LhaProperty.getProperties()
public LhaImmediateOutputStream(RandomAccessFile file,
Properties property)
file - RandomAccessFile のインスタンス。property - 各圧縮形式に対応した符号器の生成式等が含まれるプロパティLhaProperty| メソッドの詳細 |
public void write(int data)
throws IOException
data - 書きこむデータ
IOException - 入出力エラーが発生した場合。
public void write(byte[] buffer)
throws IOException
buffer - 書き出すデータの入ったバイト配列
IOException - 入出力エラーが発生した場合。
public void write(byte[] buffer,
int index,
int length)
throws IOException
buffer - 書き出すデータの入ったバイト配列index - buffer内の書き出すべきデータの開始位置length - データのバイト数
IOException - 入出力エラーが発生した場合。
public void flush()
throws IOException
IOException - 入出力エラーが発生した場合PostLzssEncoder.flush(),
LzssOutputStream.flush()
public void close()
throws IOException
IOException - 入出力エラーが発生した場合
public void putNextEntry(LhaHeader header)
throws IOException
header - 書きこむエントリについての情報を持つ
LhaHeaderのインスタンス。
IOException - 入出力エラーが発生した場合
IllegalArgumentException - header.getOriginalSize() が LhaHeader.UNKNOWN を返す場合
public void putNextEntryAlreadyCompressed(LhaHeader header)
throws IOException
header - 書きこむエントリについての情報を持つ
LhaHeaderのインスタンス。
IOException - 入出力エラーが発生した場合
IllegalArgumentException - IllegalStateException - 以前のエントリが未だに closeEntry() されていない場合
public void putNextEntryNotYetCompressed(LhaHeader header)
throws IOException
header - 書きこむエントリについての情報を持つ
LhaHeaderのインスタンス。
IOException - 入出力エラーが発生した場合
IllegalArgumentException - header.getOriginalSize() が
LhaHeader.UNKNOWN を返した場合
IllegalStateException - 以前のエントリが未だに
closeEntry() されていない場合
public boolean closeEntry()
throws IOException
IOException - 入出力エラーが発生した場合
|
LHA Library for Java | ||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||||