java文件打包下载代码

文件打包下载代码

(多个文件打包下载)

一:

String [] fileUrlArray = fileUrls.split(",");

File[] files=new File[fileUrlArray.length];

for (int j = 0; j < fileUrlArray.length; j++) {

 path=fileUrlArray[j];

 File file = new File(path);

 files[j]=file;

 filesList.add(file);

}  

downLoadFiles(filesList, request, response);

二:

public static HttpServletResponse downLoadFiles(List<File> files,

             HttpServletRequest request, HttpServletResponse response)

            throws Exception {

try {

//这里的文件你可以自定义是.rar还是.zip

File file = new File("C:/附件.zip");

if (!file.exists()){   

     file.createNewFile();   

}

response.reset();

//创建文件输出流

FileOutputStream fous = new FileOutputStream(file);   

/**打包的方法我们会用到ZipOutputStream这样一个输出流,* 所以这里我们把输出流转换一下*/

ZipOutputStream zipOut = new ZipOutputStream(fous);

/**这个方法接受的就是一个所要打包文件的集合,

* 还有一个ZipOutputStream*/

zipFile(files, zipOut);

zipOut.close();

fous.close();

return downloadZip(file,response);

}catch (Exception e) {

e.printStackTrace();

}

return response ;

}

三:

/**

* 把接受的全部文件打成压缩包

* @param List<File>;  

*@paramorg.apache.tools.zip.ZipOutputStream  

*/

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);

    }

}

四:

/**  

  * 根据输入的文件与输出流对文件进行打包

  * @param File

  * @param org.apache.tools.zip.ZipOutputStream

  */

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);

 //org.apache.tools.zip.ZipEntry

  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();

  }

   }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值