我的应用程序正在通过SMTP服务器接收电子邮件。电子邮件中有一个或多个附件,电子邮件附件以byte []的形式返回(使用sun javamail api)。
我正在尝试快速压缩附件文件,而不先将其写入磁盘。
有什么/可能的方法来实现这一结果?
最佳答案
您可以使用Java的java.util.zip.ZipOutputStream在内存中创建一个zip文件。例如:
public static byte[] zipBytes(String filename, byte[] input) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ZipOutputStream zos = new ZipOutputStream(baos);
ZipEntry entry = new ZipEntry(filename);
entry.setSize(input.length);
zos.putNextEntry(entry);
zos.write(input);
zos.closeEntry();
zos.close();
return baos.toByteArray();
}