Diese Klasse kann mehrere Dateien komprimieren und Streams zurückgeben.
Die Codekopie lautet wie folgt:
/**
* Methode Beschreibung: <b> Testklasse </b> </br>
*/
public class testfileStream {
// Speicherort von Dateien und komprimierten Paketen
StringTempilePath = "C:/temp/"
Liste <String> filelist = newArrayList <string> ();
filelist.add (tempfilepath+"file1.txt");
filelist.add (tempfilepath+"file2.png");
filelist.add (tempfilepath+"file3.xls");
// Der generierte komprimierte Paketame
Stringzipname = "fieledata";
// kehre zum Stream zurück
BytearrayoutputStreamOutputStream = Filetozip (Filelist, fehlgeschlagen, tempfilepath);
// Seiteneingangs komprimierter Paketfluss
byte [] buffer = outputStream.tobytearray ();
// Reaktion klar
response.reset ();
// Setzen Sie den Antwortheader
response.addHeader ("Inhaltsdisposition",
"Anhang; Dateiname ="+
NewString (("DataFile.zip"). GetBytes ("GB2312"), ISO8859-1 "));
response.addHeader ("Inhaltslänge", "+outputStream.size ());
toclient = newbuffeedOutputStream (response.getOutputStream ());
response.setContentType ("Anwendung/Oktett-Stream");
Toclient.write (Puffer);
toclient.flush ();
}
/**
*Methode Beschreibung: <b> Mehrere Dateien in ZIP -Pakete komprimieren </b> </br>
*/
publicByTearrayoutputStreamfiletozi (List <String> Filelist, Stringzipname, StringTempilePath) {
byte [] buffer = newbyte [1024];
ZipoutputStreamout = null;
versuchen{
out = NewzipoutputStream (newFileOutputStream (tempfilepath+zipname+". Zip"));
Liste <Datei> fieledata = newArrayList <Datei> ();
für (inti = 0, len = filelist.size (); i <len; i ++)
{
fieledata.add (newfile (filelist.get (i)));
}
für (intj = 0, len = fieledata.size (); j <len; j ++)
{
FileInputStreamfis = newFileInputStream (farredata.get (j));
out.putNextEntry (newzipentry (fehlgedachtata.get (j) .getName ()));
intdatalen;
// Lesen Sie den Inhalt der Datei, die Sie zum Herunterladen und Verpacken in der ZIP -Datei lesen müssen
while ((datalen = fis.read (puffer))> 0) {
out.write (Buffer, 0, Datalen);
}
out.closeEntry ();
fis.close ();
}
out.close ();
}
fangen (Ausnahme)
{
ex.printstacktrace ();
}
// Lesen Sie das komprimierte Paket
DateiFileZIP = newfile (tempfilepath+ZipName+". Zip");
BytearrayoutputStreambaos = null;
versuchen
{
baos = newByTearrayoutputStream ();
FileInputStreamInstream = newFileInputStream (FileIZIP);
BufferedInputStreambis = newbufufperedInputStream (Instreme);
intc = Bis.read ();
while (c! =-1) {
baos.write (c);
c = Bis.read ();
}
Bis.close ();
instream.close ();
}
fangen (Ausnahme)
{
ex.printstacktrace ();
}
returnbaos;
}