压缩JAVA中的文件

时间:2016-01-27 07:13:15

标签: java file-comparison

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

文件大小约为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();

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

谢谢, 凯蒂

1 个答案:

答案 0 :(得分:0)

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