如何用java压缩给定的文件集
我想压缩一组给定位置的文件 将该Zip文件发送到下面提到的方法如何用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
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){
}
}
}