浏览 2818 次
锁定老帖子 主题:控制层实现文件压缩与下载
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (3)
|
|
---|---|
作者 | 正文 |
发表时间:2009-05-09
最后修改:2009-05-10
之前做的一个项目时遇到下载多个文件,要求先能够在压缩在一并下载.实现原理也很简单,主要就是利用Zip流进行压缩. /** * 多个文件 * * @param files * 所要打包的文件列表 * @param outputStream */ public static void zipFile(List files, ZipOutputStream outputStream) { int size = files.size(); for (int i = 0; i < size; i++) { File file = (File) files.get(i); zipFile(file, outputStream); } } /** * 根据输入的文件与流对文件进行打包 */ public static void zipFile(File inputFile, ZipOutputStream ouputStream) { try { if (inputFile.exists()) { if (inputFile.isFile()) { FileInputStream in = new FileInputStream(inputFile); BufferedInputStream bins = new BufferedInputStream(in, 512); ZipEntry entry = new ZipEntry(inputFile.getName()); ouputStream.putNextEntry(entry); // 向压缩文件中输出数据 int nNumber; byte[] buffer = new byte[512]; while ((nNumber = bins.read(buffer)) != -1) { ouputStream.write(buffer, 0, nNumber); // 关闭创建的流对象 } bins.close(); in.close(); } else { try { File[] files = inputFile.listFiles(); for (int i = 0; i < files.length; i++) { zipFile(files[i], ouputStream); } } catch (Exception e) { e.printStackTrace(); } } } } catch (Exception e) { e.printStackTrace(); } } test(){ File file = new File("temp.rar"); if (!file.exists()) { file.createNewFile(); } FileOutputStream fous = new FileOutputStream(file); ZipOutputStream zipOut = new ZipOutputStream(fous); zipFile(files, zipOut); zipOut.close(); }
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |