Creo que le interesaría ZipOutputStream. Puede escribir en esa secuencia y luego escribirla en un archivo comprimido.
Además, consulte este tutorial para working with compressed (zipped) files in Java. Aquí hay un fragmento de ese tutorial, que podría ser una ilustración útil:
BufferedInputStream origin = null;
FileOutputStream dest = new
FileOutputStream("c:\\zip\\myfigs.zip");
ZipOutputStream out = new ZipOutputStream(new
BufferedOutputStream(dest));
//out.setMethod(ZipOutputStream.DEFLATED);
byte data[] = new byte[BUFFER];
// get a list of files from current directory
File f = new File(".");
String files[] = f.list();
for (int i=0; i<files.length; i++) {
System.out.println("Adding: "+files[i]);
FileInputStream fi = new
FileInputStream(files[i]);
origin = new
BufferedInputStream(fi, BUFFER);
ZipEntry entry = new ZipEntry(files[i]);
out.putNextEntry(entry);
int count;
while((count = origin.read(data, 0,
BUFFER)) != -1) {
out.write(data, 0, count);
}
origin.close();
}
out.close();
que he visto en este ejemplo, y no creo que era lo que estaba buscando. Después de jugar un poco con eso, finalmente entiendo lo que hace. La única diferencia para mí es que realmente no voy a iterar a través de ningún archivo. Crearé una nueva entrada en el archivo comprimido y escribiré en esta entrada lo que estoy escribiendo actualmente en un archivo. – Andrei
@ Andrei-- Sí, no hay ninguna razón para que su archivo comprimido necesite contener más de un archivo dentro. Me alegro de esto ayudó! – pkaeding