Этот класс может сжать несколько файлов и возвращать потоки.
Кода -копия выглядит следующим образом:
/**
* Метод Описание: <b> Тестовый класс </b> </br>
*/
открытый класс TestFileStream {
// Место хранения файлов и сжатых пакетов
StringTempFilePath = "c:/temp/"
List <string> filelist = newarraylist <string> ();
filelist.add (tempfilepath+"file1.txt");
filelist.add (tempfilepath+"file2.png");
filelist.add (tempfilepath+"file3.xls");
// сгенерированное сжатое имя пакета
StringZipName = "fileData";
// Вернуться в поток
BytearRayOutputStreamOutputStream = fileTozip (FileList, FileData, TempfilePath);
// ввод страницы сжатый пакет поток
byte [] buffer = outputstream.tobytearray ();
// четкий ответ
response.reset ();
// Установить заголовок ответа
response.addheader ("disposition",
"Приложение; файл имени ="+
Newstring (("datafile.zip"). Getbytes ("GB2312"), "ISO8859-1"));
response.addheader («Длина контента», «+outputstream.size ());
toclient = newBufferedOutputStream (response.getOutputStream ());
response.setContentType («Приложение/октет-поток»);
toclient.write (буфер);
toclient.flush ();
}
/**
*Метод Описание: <b> Сжатие нескольких файлов в пакеты Zip </b> </br>
*/
publicbyTearRayOutputStreamFileTeTozip (List <string> fileList, StringzipName, StringTempfilePath) {
byte [] buffer = newbyte [1024];
Zipoutputstreamout = null;
пытаться{
out = newzipoutputstream (newFileOutputStream (TempFilePath+ZipName+". Zip"));
List <file> filedata = newarraylist <file> ();
for (inti = 0, len = filelist.size (); i <len; i ++)
{
filedata.add (newfile (filelist.get (i)));
}
for (intj = 0, len = filedata.size (); j <len; j ++)
{
FileInputStreamFis = newFileInputStream (fileData.get (j));
out.putnextentry (newzipentry (filedata.get (j) .getName ()));
Intdatalen;
// Читать содержимое файла, необходимого загрузить и упаковать его в файл ZIP
while ((datalen = fis.read (buffer))> 0) {
out.write (Buffer, 0, DataLen);
}
out.closeentry ();
fis.close ();
}
out.close ();
}
Уловитель (ExceptionEx)
{
ex.printstacktrace ();
}
// Читать сжатый пакет
FileFilezip = newFile (tempFilePath+ZipName+". Zip");
BytearrayOutputStreambaos = null;
пытаться
{
baos = newbytearrayoutputstream ();
FileInputStreamInstream = newFileInputStream (filezip);
BufferedInputStreamBIS = newBufferedInputStream (inStream);
intc = bis.read ();
while (c! =-1) {
baos.write (c);
c = bis.read ();
}
bis.close ();
instream.close ();
}
Уловитель (ExceptionEx)
{
ex.printstacktrace ();
}
returnbaos;
}