下载服务器文件到.zip压缩中导出

1.调用file3Zip方法

/***
	 *  
	 * @param file 
	 * @param path 压缩的路径:path="C:/yasuo/"
	 * @param name 压缩文件的名称
	 * @return 
	 */
	public String yaSuo(File file,String path,String name) {
		//取需要加入压缩包的文件
		String[] aa=file.list(new FilenameFilter() {
			@Override
			public boolean accept(File dir, String name) {
				//文件名包含.docx将被选出来放入数组
				if(name.contains(".docx")) {
					return true;
				}
				return false;
			}
		});
		//循环数组加入文件集合
		List<String> list=new ArrayList<String>();
		for(int i=0;i<aa.length;i++) {
			list.add(aa[i]);
		
		}
		 ZipOutputStream zipOutputStream = null;
		try {
			 //创建压缩文件
		      //zipOutputStream = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(file)));
	         
			//根据路径和List文件名将文件加入压缩包
			 XwpfTest.file3Zip(path,name,list);
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
		    if(zipOutputStream!=null)
				try {
					zipOutputStream.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
		}
		return path+name;
	}

/**
   * 生成.zip文件(当前方法限定 zip文件输出路径必须与压缩文件在同一路径下)
   *
   * @param path              zip输出路径前缀
   * @param compressFileNames 压缩文件名称
   * @parm List<String>  文件集合
   * @throws IOException 异常信息
   */
  public static String file3Zip(String path,String name, List<String> fileNameList) throws IOException {
      ZipOutputStream zipOutputStream;
      //创建压缩包文件对象 压缩包名称
      File file = new File(path + name);
      //创建压缩包流并创建对应压缩包
      zipOutputStream = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(file)));
      //获取当前文件路径下所有文件数组
      File[] files = new File(path).listFiles();
      FileInputStream fileInputStream;
      byte[] buf = new byte[1024];
      String fileName;
      int len;
      //List<String> fileNameList = Arrays.asList(compressFileNames);
      if (files != null && files.length > 0) {
          //遍历当前文件列表 当前文件名称包含传入的文件名称时 将当前文件进行压缩
          for (File excelFile : files) {
              fileName = excelFile.getName();
              //判断是否包含当前文件
              if (fileNameList.contains(fileName)) {
                  //获取当前文件输入流
                  fileInputStream = new FileInputStream(excelFile);
                  //放入压缩zip包中
                  zipOutputStream.putNextEntry(new ZipEntry(fileName));
                  //读取文件
                  while ((len = fileInputStream.read(buf)) > 0) {
                      zipOutputStream.write(buf, 0, len);
                  }
                  //关闭当前压缩包流
                  zipOutputStream.closeEntry();
                  //关闭输入流
                  fileInputStream.close();
              }
          }
      }
      //关闭输出流
      zipOutputStream.close();
      return file.getName();
  }

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值