我的项目要求我必须通过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();
任何人都可以为我的用例建议如果我使用上面的代码是没关系,还是我必须使用其他类来执行相同的操作。
谢谢, 凯蒂
答案 0 :(得分:0)
ByteArrayOutputStream将压缩输出缓存在内存中。你必须将它包装在FileOutputStream周围,以避免在写入大文件时出现任何OOM问题。