java zip 下载_java实现生成zip和下载zip

//生成zip

public boolean createCardImgZip(String sourcePath, String zipName) {

// TODO Auto-generated method stub

boolean result = false;

String zipPath = "D:/test/";

File sourceFile = new File(sourcePath);

FileInputStream fis = null;

BufferedInputStream bis = null;

FileOutputStream fos = null;

ZipOutputStream zos = null;

if (sourceFile.exists() == false) {

System.out.println("File catalog:" + sourcePath + "not exist!");

} else {

try {

if(!new File(zipPath).exists()){

new File(zipPath).mkdirs();

}

File zipFile = new File(zipPath + "/" + zipName + ".zip");

if (zipFile.exists()) {

System.out.println(zipPath + "Catalog File: " + zipName + ".zip" + "pack file.");

} else {

File[] sourceFiles = sourceFile.listFiles();

if (null == sourceFiles || sourceFiles.length < 1) {

System.out.println("File Catalog:" + sourcePath + "nothing in there,don't hava to compress!");

} else {

fos = new FileOutputStream(zipFile);

zos = new ZipOutputStream(new BufferedOutputStream(fos));

byte[] bufs = new byte[1024 * 10];

for (int i = 0; i < sourceFiles.length; i++) {

// create .zip and put pictures in

ZipEntry zipEntry = new ZipEntry(sourceFiles[i].getName());

zos.putNextEntry(zipEntry);

// read documents and put them in the zip

fis = new FileInputStream(sourceFiles[i]);

bis = new BufferedInputStream(fis, 1024 * 10);

int read = 0;

while ((read = bis.read(bufs, 0, 1024 * 10)) != -1) {

zos.write(bufs, 0, read);

}

}

result = true;

}

}

} catch (FileNotFoundException e) {

e.printStackTrace();

throw new RuntimeException(e);

} catch (IOException e) {

e.printStackTrace();

throw new RuntimeException(e);

} finally {

try {

if (null != bis)

bis.close();

if (null != zos)

zos.close();

} catch (IOException e) {

e.printStackTrace();

throw new RuntimeException(e);

}

}

}

return result;

}

//下载zip

public String downLoadZip() {

String fileName = "test.zip";

String path = "D:\\test\\test.zip";

try {

HttpServletResponse response = ServletActionContext.getResponse();

File file = new File(path);

response.setCharacterEncoding("UTF-8");

response.setHeader("Content-Disposition",

"attachment; filename=" + new String(fileName.getBytes("UTF-8"), "ISO8859-1"));

response.setContentLength((int) file.length());

response.setContentType("application/zip");// 定义输出类型

FileInputStream fis = new FileInputStream(file);

BufferedInputStream buff = new BufferedInputStream(fis);

byte[] b = new byte[1024];// 相当于我们的缓存

long k = 0;// 该值用于计算当前实际下载了多少字节

OutputStream myout = response.getOutputStream();// 从response对象中得到输出流,准备下载

// 开始循环下载

while (k < file.length()) {

int j = buff.read(b, 0, 1024);

k += j;

myout.write(b, 0, j);

}

myout.flush();

buff.close();

file.delete();

} catch (Exception e) {

System.out.println(e);

}

return null;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值