文档章节

批量下载

to_ln
 to_ln
发布于 2017/09/04 16:50
字数 466
阅读 37
收藏 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
JEPLUS平台Excel批量导入的操作配置——JEPLUS软件快速开发平台

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

JEPLUS
06/26
0
0
更好用的chrome下载器 chrono

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

木子昭
08/12
0
0
腾讯云对象存储COS批量删除工具及教程

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

zchuanzhao
2016/11/16
145
2

没有更多内容

加载失败,请刷新页面

加载更多

kubeadm部署kubernetes集群

一、环境要求 这里使用RHEL7.5 master、etcd:192.168.10.101,主机名:master node1:192.168.10.103,主机名:node1 node2:192.168.10.104,主机名:node2 所有机子能基于主机名通信,编辑...

人在艹木中
今天
2
0
Shell特殊符号总结以及cut,sort,wc,uniq,tee,tr,split命令

特殊符号总结一 * 任意个任意字符 ? 任意一个字符 # 注释字符 \ 脱义字符 | 管道符 # #号后的备注被忽略[root@centos01 ~]# ls a.txt # 备注 a.txt[root@centos01 ~]# a=1[root@centos01...

野雪球
今天
2
0
OSChina 周二乱弹 —— 程序员圣衣

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @达尔文:分享Skeeter Davis的单曲《The End of the World》 《The End of the World》- Skeeter Davis 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
今天
14
0
[ python import module ] 导入模块

import moudle_name ----> import module_name.py ---> import module_name.py文件路径 -----> sys.path (这里进行查找文件) # from app.web import Personimport app.web.Person as Pe......

_______-
昨天
5
0
Redis性能问题排查解决手册

一、性能相关的数据指标 通过Redis-cli命令行界面访问到Redis服务器,然后使用info命令获取所有与Redis服务相关的信息。通过这些信息来分析文章后面提到的一些性能指标。 nfo命令输出的数据可...

IT--小哥
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部