Primeiro, cria-se um objeto de escrita de bytes FileOutputStream, em seguida cria-se um ZipOutputStream passando o FileOutputStream como parâmentro. O ZipOutputStream é responsável por escrever os bytes de forma compactada.
Segue um exemplo de como compactar o conteúdo de uma variável String:
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class ZipFile {
public static void main(String[] args) {
String str = "Texto para ser compactado! teste.";
try {
// cria o arquivo zip
String outFilename = "/tmp/outfile.zip";
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(
outFilename));
out.putNextEntry(new ZipEntry("file.txt"));
// grava a string acima no arquivo zip
out.write(str.getBytes(), 0, str.getBytes().length);
out.closeEntry();
// fecha a stream e completa o arquivo
out.close();
} catch (IOException e) {
}
System.out.println("Complete");
}
}
O código de exemplo cria uma aquivo compactado /tmp/outfile.zip. Dentro do arquivo zip será criado um arquivo chamado file.txt com o texto contido na String str.
Para mais informações:
http://java.sun.com/developer/technicalArticles/Programming/compression/