我的项目有一个要求,我必须通过REST服务接收一个文件(使用jersey)并将其存储在数据库中。
文件大小将在2-4MB左右。
接收到的文件可以是zip或pdf格式。在存储到数据库之前,我想压缩它。
我搜索并发现有许多可用的类,如GZip,Zip,平减.我想使用平移器,因为它看起来很简单。我已经写了以下的代码拉链。
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();有谁能为我的用例提供建议吗?如果我使用上面的代码,可以吗?还是我必须使用其他类来执行同样的操作。
谢谢你,凯蒂
发布于 2016-01-27 07:41:20
ByteArrayOutputStream在内存中缓存压缩的输出。您必须将它封装在FileOutputStream上,以避免在编写大文件时出现任何OOM问题。
https://stackoverflow.com/questions/35030921
复制相似问题