文档章节

批量下载

to_ln
 to_ln
发布于 2017/09/04 16:50
字数 466
阅读 34
收藏 0

前段时间实现了批量下载,简单整理了下用到的代码。

 

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class test {
 
 public static void main(String args[]){
  try {
   downLoadFiles();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
 
 //文件打包下载
    public static void downLoadFiles()
             throws Exception {
         try {
         
          //要下载的文件集合
          List<File> files = new ArrayList<File>();
          File  fs = new File("C:/Users/Administrator/Desktop/demo");
          File[] tempList  = fs.listFiles();
          if(tempList.length > 0){
           for(File f : tempList) {
                     //如果是文件,直接打印文件名称
                     if(f.isFile()){//文件时,放进去进行打包
                    files.add(f);
                    }
                   //目录时,可根据情况,后面实现的不能打包目录,只是把目录里文件取出来进行打包
                   //else{
                   // files.add(f);
                   //}
           }

          }
     
             //这里我直接下载到本地了,可以根据需求,先下载至临时文件里,下载后将这个临时文件删除
             File file = new File("C:/Users/Administrator/Desktop/批量下载/filedownload.zip");
             if (!file.exists()){  
                 file.createNewFile();  
             }
             //创建文件输出流
            FileOutputStream fous = new FileOutputStream(file);
           
            //转换为ZipOutputStream输出流
            ZipOutputStream zipOut
             = new ZipOutputStream(fous);
             // 开始打包
            zipFile(files, zipOut);
             zipOut.close();
             fous.close();
         }catch (Exception e) {
                 e.printStackTrace();
             }
     
     }

    /**
      * 打成zip压缩包
      * @param List<File>; 
      * @param org.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();
         }
     }


}

© 著作权归作者所有

共有 人打赏支持
to_ln
粉丝 0
博文 67
码字总数 14598
作品 0
东城
医学教育网批量资源下载程序之——完成

大家好! 经过好长时间的拆腾,终于实现了 “医学教育网批量资源下程序” 。 相关的博文: 医学教育网批量资源下载程序之——登陆 医学教育网批量资源下载程序之——探路 医学教育网批量资源...

临峰不畏
2015/01/18
0
1
Rexdeploy: 一个基于名字服务自动化平台(命令行CLI版 和 API接口版)

Rexdeploy Rexdeploy: 一个基于名字服务自动化平台(命令行CLI版 和 API接口版) 中文文档 简单描述 RexDeploy是一个免客户端安装的管控平台,支持基于,基于,以及基于,用户管理等,同时也...

运维技术
07/25
0
0
更好用的chrome下载器 chrono

众所周知, chrome原生的下载功能的确不太好用, 如果我们需要查看当前的下载任务, 需要点击两次(点击右上角 三个点 , 点击下载内容), 而使用了chrono, 只需要点击一次(点击chrono) chrono还集...

木子昭
08/12
0
0
JEPLUS平台Excel批量导入的操作配置——JEPLUS软件快速开发平台

JEPLUS平台Excel批量导入的操作配置 JEPLUS平台支持Excel数据的批量导入,但是很多客户不明白批量导入怎么配置,今天这个笔记就简单说一下JEPLUS的Excel数据批量导入怎么来配置。 一、效果展...

JEPLUS
06/26
0
0
腾讯云对象存储COS批量删除工具及教程

COS是腾讯云推出的一款云对象存储产品,用户可将任意动态、静态生成的数据、文件,存放到COS上,再通过HTTP的方式进行访问。腾讯云为了扶持中小站点及推广产品,现提供50GB永久免费存储空间及...

zchuanzhao
2016/11/16
145
2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

php 使用redis锁限制并发访问类

1.并发访问限制问题 对于一些需要限制同一个用户并发访问的场景,如果用户并发请求多次,而服务器处理没有加锁限制,用户则可以多次请求成功。 例如换领优惠券,如果用户同一时间并发提交换领...

豆花饭烧土豆
21分钟前
0
0
Linux环境搭建 | 手把手教你配置Linux虚拟机

在上一节 「手把你教你安装Linux虚拟机」 里,我们已经安装好了Linux虚拟机,在这一节里,我们将配置安装好的Linux虚拟机,使其达到可以开发的程度。 Ubuntu刚安装完毕之后,还无法进行开发,...

良许Linux
23分钟前
0
0
Nginix开启SSL支持HTTPS访问(自签名方法)

Nginix开启SSL支持HTTPS访问(自签名方法) 超文本传输安全协议(缩写:HTTPS,英语:Hypertext Transfer Protocol Secure)是超文本传输协议和SSL/TLS的组合,用以提供加密通讯及对网络服务器...

openthings
39分钟前
0
0
(三)Nginx配置·续

概述 前文写了关于Nginx环境配置,但是还没有完,接下来将会继续讲三个相关的配置 主要是以下三个 1.Nginx访问日志 2.Nginx日志切割 3.静态文件不记录日志和过期时间 Nginx访问日志 1.先看看...

杉下
今天
1
0
jquery创建类似于java的map

var map = {}; // Map map = new HashMap(); map[key] = value; // map.put(key, value); var value = map[key]; // Object value = map.get(key); var has = key in map; // boolean has = ......

SuperDabai
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部