Esta clase puede comprimir múltiples archivos y devolver flujos.
La copia del código es la siguiente:
/**
* Descripción del método: <b> Clase de prueba </b> </br>
*/
clase pública testFilErsream {
// Ubicación de almacenamiento de archivos y paquetes comprimidos
StringtempfilePath = "c:/temp/"
List <String> fileList = newArrayList <String> ();
filelist.add (tempfilePath+"file1.txt");
filelist.add (tempfilePath+"file2.png");
filelist.add (tempfilePath+"file3.xls");
// El nombre del paquete comprimido generado
StringZipName = "FileData";
// volver a la transmisión
ByteArRayOutputStreamOutputStream = filetOzip (filelist, fileData, tempfilePath);
// Flujo de paquetes comprimido de entrada de página
byte [] buffer = outputStream.TobyTearray ();
// Respuesta clara
respuesta.reset ();
// Establecer el encabezado de respuesta
Respuesta.AddHeader ("Disposición de contenido",
"Adjunto; FileName ="+
Newstring (("DataFile.zip"). GetBytes ("GB2312"), "ISO8859-1"));
Respuesta.AddHeader ("Content-longitud", ""+outputStream.size ());
tOClient = newBufferedOutputStream (Response.getOutputStream ());
respuesta.setContentType ("Application/Octet-stream");
tOclient.write (buffer);
tOclient.flush ();
}
/**
*Descripción del método: <b> comprimir múltiples archivos en paquetes zip </b> </br>
*/
publicbyTearRauteoutputStreamFiletOzip (List <String> FILELIST, STRINGZIPNAME, StringTempFilePath) {
byte [] buffer = newByte [1024];
ZipOutputStreamOut = NULL;
intentar{
out = newzipoutputStream (newFileOutputStream (tempfilePath+zipname+". zip"));
Lista <Sche> fileData = newArrayList <ScheS> ();
para (inti = 0, len = filelist.size (); i <len; i ++)
{
fileData.add (newfile (filelist.get (i)));
}
para (intj = 0, len = filedata.size (); j <len; j ++)
{
FileInputStreamFis = newFileInputStream (fileData.get (j));
out.putNextEntry (newzipEntry (fileData.get (j) .getName ()));
intdatalen;
// Lea el contenido del archivo que necesita descargarlo y empaquetarlo en el archivo zip
while ((dataLen = fis.read (buffer))> 0) {
out.write (buffer, 0, dataLen);
}
out.closeEntry ();
fis.close ();
}
out.close ();
}
Catch (ExceptionEx)
{
Ex.PrintStackTrace ();
}
// Lea el paquete comprimido
FileFileZip = newFile (tempFilePath+ZipName+". Zip");
ByteArRayOutputStreambaos = null;
intentar
{
baos = newByTearRaReOutputStream ();
FileInputStreamInstream = newFileInputStream (fileZip);
BufferedInputStreamBis = newBufferedInputStream (InSteam);
intc = bis.read ();
while (c! =-1) {
baos.write (c);
c = bis.read ();
}
bis.close ();
Intileam.close ();
}
Catch (ExceptionEx)
{
Ex.PrintStackTrace ();
}
Returnbaos;
}