首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

关于文件打成压缩包的有关问题

2011-11-16 
关于文件打成压缩包的问题当前页面上有N条记录,每一条记录对应着一个文件,我现在能做的是单击每一条记录实

关于文件打成压缩包的问题
当前页面上有N条记录,每一条记录对应着一个文件,我现在能做的是单击每一条记录实现下载功能,或者设置一个按钮批量下载下来,但是这样会调用N次下载方法,经理要让我实现的是:设置一个按钮,单击的时候把所有文件打成一个压缩包下载下来,请问如何实现,有人做过没,每个文件的路径我可以得到。。。坐等高手支援.。。只剩44分了对不起大家

[解决办法]

Java code
private void writeZipFile(File[] files) throws Exception {      String zipName = "[" + getUserName() + System.currentTimeMillis() + "].zip";      File zip = new File(tzipName);      ZipOutputStream out = new ZipOutputStream(zip);      for(int i = 0; i < files.length; i++) {         if(files[i] == null) {            continue;         }         FileInputStream in = new FileInputStream(files[i]);         ZipEntry entry = new ZipEntry(files[i].getName().replaceAll("\\[.+\\]", ""));         out.putNextEntry(entry);         byte[] bytes = new byte[256];         while(in.read(bytes) != -1) {            out.write(bytes);         }         out.closeEntry();         in.close();      }      out.flush();      out.close();   }
[解决办法]
Java code
         String fileName = "";         fileName  = URLEncoder.encode(fileName, "utf-8");         servletResponse.setContentType("application/x-download");         servletResponse.addHeader("Content-Disposition",               "attachment;filename=" + fileName);
[解决办法]
private static void dirToZip(String baseDirPath, File dir,
ZipOutputStream out) throws IOException {
// 得到一个文件列表 (本目录下的所有文件对象集合)
File[] files = dir.listFiles();
/**
* 要是这个文件集合数组的长度为 0 , 也就证明了这是一个空的文件夹

* 虽然没有再循环遍历它的必要,但是也要把这个空文件夹也压缩到目标文件中去
*/
if (files.length == 0) {
// 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例
String zipFileName = getEntryName(baseDirPath, dir);
ZipEntry entry = new ZipEntry(zipFileName);
out.putNextEntry(entry);
out.closeEntry();
} else {
// 遍历所有的文件 一个一个地压缩
for (int i = 0; i < files.length; i++) {
File file = files[i];
if (file.isFile()) {
// 调用本类的一个静态方法 压缩一个文件
CompressUtil.fileToZip(baseDirPath, file, out);
} else {
/*
* 这是一个文件夹 所以要再次得到它下面的所有的文件
* 这里是自己调用自己..............递归..........
*/
CompressUtil.dirToZip(baseDirPath, file, out);
}
}
}
 }
[解决办法]
java里哟个ZipOutputStream ,可以读写压缩文件

热点排行