アプリケーションが SMTP サーバー経由で電子メールを受信しています。電子メールには 1 つ以上の添付ファイルがあり、電子メールの添付ファイルは 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();
}
多分java.util.zipパッケージがあなたを助けるかもしれません
バイト配列から変換する方法について質問しているので、(テストされていない)ByteArrayInputStream メソッドを使用できると思います
int read(byte[] b, int off, int len)
Reads up to len bytes of data into an array of bytes from this input stream.
あなたが食べます
ZipInputStream This class implements an input stream filter for reading files in the ZIP file format.
そのためには ZipOutputStream を使用する必要があります。
http://java.sun.com/javase/6/docs/api/java/util/zip/ZipOutputStream.html