如何用java压缩给定的文件集

如何用java压缩给定的文件集,java,zip,Java,Zip,我想压缩一组给定位置的文件 将该Zip文件发送到下面提到的方法 private StreamingOutput buildStreamingOutput(final File pdfFile, final boolean isGeneratedPdf) { return new StreamingOutput() { @Override public void write(OutputStream output) throws IO

我想压缩一组给定位置的文件

将该Zip文件发送到下面提到的方法

private StreamingOutput buildStreamingOutput(final File pdfFile, final boolean isGeneratedPdf) {
        return new StreamingOutput() {
            @Override
            public void write(OutputStream output) throws IOException, WebApplicationException {
                java.nio.file.Path path = Paths.get(pdfFile.getAbsolutePath());
                byte[] data = CryptoUtil.decryptAsByteArray(path);
                output.write(data);
                output.flush();
                output.close();
                if (isGeneratedPdf) {
                    pdfFile.delete();
                }
            }
        };
    }

是否可以压缩文件并将该压缩文件作为文件(file.class)发送?

可能对您有用

使用以下代码:

         public void buildStreamingOutput(HttpServletResponse 
              resp,java.util.List<File> files) throws IOException {
              ZipOutputStream  zipOutstream = new 
              ZipOutputStream(resp.getOutputStream());
           resp.setContentType("application/octet-stream");
           resp.setHeader("Content-Disposition", "attachment; filename= 
        {zipfilename.zip}");

           for(File file : files) {
               appendFileToZIP(zipOutstream,file);
           }

       }


       public void appendFileToZIP( ZipOutputStream _zipOutstream  ,final File pdfFile) {

            int nlength = 0;

            FileInputStream fis = null;
            DataInputStream disObj = null;

            try {

                if (!pdfFile.exists()) {
                    System.out.println(" file does not exists "+pdfFile.getName());
                    return;
                }

                fis = new FileInputStream(pdfFile);

                _zipOutstream.putNextEntry(new ZipEntry(pdfFile.getName()));

                disObj = new DataInputStream(fis);

                byte[] bbuf = new byte[1024];
                while ((disObj != null) && ((nlength = disObj.read(bbuf)) != -1)) {
                    _zipOutstream.write(bbuf, 0, nlength);
                }
                _zipOutstream.flush();

            } catch (IOException e) {

            } catch (Exception e) {

            } finally {
                try {
                    fis.close();
                } catch (Exception e) {

                }

            }
        }
public void buildStreamingOutput(HttpServletResponse
resp,java.util.List文件)引发IOException{
zipOutstream zipOutstream=新
ZipOutputStream(分别为getOutputStream());
分别为setContentType(“应用程序/八位字节流”);
resp.setHeader(“内容处置”、“附件;文件名)=
{zipfilename.zip}”);
用于(文件:文件){
appendFileToZIP(zipOutstream,文件);
}
}
public void appendFileToZIP(zipOutstream _zipOutstream,最终文件pdfFile){
int-nlength=0;
FileInputStream fis=null;
DataInputStream disObj=null;
试一试{
如果(!pdfFile.exists()){
System.out.println(“文件不存在”+pdfFile.getName());
返回;
}
fis=新文件输入流(pdfFile);
_zipOutstream.putNextEntry(新的ZipEntry(pdfFile.getName());
disObj=新数据输入流(fis);
字节[]bbuf=新字节[1024];
而((disObj!=null)&((nlength=disObj.read(bbuf))!=-1)){
_zipOutstream.write(bbuf,0,nlength);
}
_zipOutstream.flush();
}捕获(IOE异常){
}捕获(例外e){
}最后{
试一试{
fis.close();
}捕获(例外e){
}
}
}