0

我的项目要求我必须通过 REST 服务(使用球衣)接收文件并将其存储在数据库中。

文件大小约为 2-4MB。

接收到的文件可以是 zip 或 pdf 格式。在存储到数据库之前,我想压缩它。

我用谷歌搜索,发现有很多可用的类,如 GZip、Zip、Deflater……我想使用 Deflater,因为它看起来很简单。我编写了以下压缩代码。


Deflater deflater = new Deflater();
deflater.setInput(data);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream(data.length);
deflater.finish();
byte[] buffer = new byte[1024];
while (!deflater.finished()) {
    int count = deflater.deflate(buffer);
    outputStream.write(buffer, 0, count);
}
outputStream.close();
byte[] output = outputStream.toByteArray();
byte[] output = outputStream.toByteArray();

任何人都可以为我的用例提出建议吗?如果我使用上面的代码是可以的,还是我必须使用其他一些类来执行相同的操作。

谢谢,小猫

4

1 回答 1

0

ByteArrayOutputStream 将压缩输出缓存在内存中。您必须将其包裹在 FileOutputStream 周围,以避免在写入大文件时出现任何 OOM 问题。

于 2016-01-27T07:41:20.477 回答