6

ユーザーが大きなファイルを私のWebサイトにアップロードし、そのファイルをgzipで圧縮してBLOBに保存したいと考えています。したがって、非圧縮のInputStreamがあり、blobはInputStreamを必要としています。GZIPOutputStreamを使用してInputStreamをOutputstreamに圧縮する方法を知っていますが、gzipで圧縮されたOutputStreamからblobに必要なInputStreamに戻すにはどうすればよいですか。

私が見つけることができる唯一の方法は、ByteArrayOutputStreamを使用してから、toByteArrayを使用して新しいInputStreamを作成することです。しかし、それは私がメモリにファイルの完全なコピーを持っていることを意味します。また、JDBCドライバーの実装がストリームをbyte []に​​変換したとしても、メモリに2つのコピーがあるので、驚くことではありません。

4

1 に答える 1

4

Java 1.6を使用している場合は、を使用できますjava.util.zip.DeflaterInputStream。私が知る限り、これはまさにあなたが望むことをします。DeflaterInputStream1.6を使用できない場合は、を使用して再実装できるはずですjava.util.zip.Deflater。BLOBからデータを読み戻すときはInflaterInputStream、元のデータを取り戻すためのフィルターとしてを使用します。

于 2010-02-02T18:33:50.087 に答える