【问题标题】:compressing files in JAVA用JAVA压缩文件
【发布时间】:2016-01-27 07:13:15
【问题描述】:

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

文件大小约为 2-4MB。

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

我google了一下,发现有很多可用的类,比如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();

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

谢谢, 小猫

【问题讨论】:

  • 所以你的代码没有实现你的目标?有什么问题吗?
  • 如果文件已经是 zip 文件,则不太可能进一步压缩。即使它可压缩的,你想用什么格式将它存储在数据库中?这应该决定你写什么代码,而不是反过来。
  • ZIP 和 PDF 已压缩。
  • 这不是代码审查网站。

标签: java file-comparison


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2022-07-27
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    相关资源
    最近更新 更多