我的应用是通过SMTP服务器接收电子邮件.电子邮件和电子邮件附件中有一个或多个附件返回byte [](使用sun javamail api).
我试图动态压缩附件文件而不先将它们写入磁盘.
有什么/可能的方法来实现这一结果?
Dav*_* L. 110
您可以使用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();
}
Run Code Online (Sandbox Code Playgroud)
Jes*_*hez 12
我有同样的问题,但我需要一个 zip 中的许多文件。
protected byte[] listBytesToZip(Map<String, byte[]> mapReporte) throws IOException {
String extension = ".pdf";
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ZipOutputStream zos = new ZipOutputStream(baos);
for (Entry<String, byte[]> reporte : mapReporte.entrySet()) {
ZipEntry entry = new ZipEntry(reporte.getKey() + extension);
entry.setSize(reporte.getValue().length);
zos.putNextEntry(entry);
zos.write(reporte.getValue());
}
zos.closeEntry();
zos.close();
return baos.toByteArray();
}
Run Code Online (Sandbox Code Playgroud)