私は大きなファイルをブラックベリーのGZIPのチャンクデータとして圧縮することはできますか?
public static byte[] compress(byte[] data)
{
try
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
GZIPOutputStream gzipStream = new GZIPOutputStream(baos, 6, GZIPOutputStream.MAX_LOG2_WINDOW_LENGTH);
gzipStream.write(data);
gzipStream.close();
}
catch(IOException ioe)
{
return null;
}
return baos.toByteArray();
}
以下のサンプルAPIasを見た。しかし、私はカーブ8900 OS 4.6での大きなファイルを圧縮しようとしたとき、私はどのようにチャンクとして圧縮することを知っていただきたいと思いますので、私は「OutOfMemoryErrorが発生」を得ました小さなデータ?
私はすでに以下のようにこのコードを試みたが、それは動作しません、圧縮ファイルを解凍することはできません...
file = (FileConnection)Connector.open(_fileOutputPath, Connector.READ_WRITE);
if (!file.exists()) {
file.create();
}
os = file.openOutputStream();
is = FileUtil.getInputStream(_fileInputPath, 0);
int tmpSize = 1024;
byte[] tmp = new byte[tmpSize];
int len = -1;
gzipStream = new GZIPOutputStream(os, 6, GZIPOutputStream.MAX_LOG2_WINDOW_LENGTH);
while((len = is.read(tmp, 0, tmpSize)) != -1) {
gzipStream.write(tmp, 0, len);
}
私はこれが間違っていると思っています - RFC 1952はgzipファイル形式を指定しています。 –