文档章节

批量下载

to_ln
 to_ln
发布于 2017/09/04 16:50
字数 466
阅读 18
收藏 0
点赞 0
评论 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
博文 40
码字总数 11179
作品 0
东城
医学教育网批量资源下载程序之——完成

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

临峰不畏 ⋅ 2015/01/18 ⋅ 1

腾讯云对象存储COS批量删除工具及教程

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

zchuanzhao ⋅ 2016/11/16 ⋅ 2

陈晓通20:一键批量下载公众号文章的图片,还能下载任何网页的图片,超级好用

如何快速搜图找图?几乎每个新媒体从业者,会经常去思考和研究。 却很少人关注,如何快速下载保存图片? 下载图片都是一张一张“另存为图片”的方式来下载,下载完了还要一张一张改属性格式、...

陈晓通 ⋅ 2017/07/13 ⋅ 0

Batch Download

用过 Flashget 的都知道它有一个批量下载功能,用来下载一组类似的 url 非常方便。所以闲来无事,就开发了这个有类似功能的扩展,它比 Flashget 的批量下载功能好的地方是可以突破一些防盗链...

匿名 ⋅ 2008/11/19 ⋅ 0

CMD命令实现批量修改文件名

cmd命令批量修改文件名: (批量去掉下载电影后的前缀) @echo offfor /f "delims=" %%a in ('dir /b/s/a-d [阳光电影www.ygdy8.com].*') do ( set "str=%%~nxa" setlocal enabledelayedexpans......

运维技术 ⋅ 2015/02/18 ⋅ 0

禅道发布 8.2 Beta 版本,重点增强自定义功能

经过一个月的开发,禅道迎来了重大版本更新,极大增强了禅道的个性化定制功能: 各个视图首页区块自定义,导航菜单自定义,批量添加和编辑页面字段自定义,列表页面自定义,导出文件字段自定...

开源春哥 ⋅ 2016/05/06 ⋅ 12

O365批量重置用户密码

O365创建了大量用户后,需要批量重置用户密码,但是通过控制台一次只能重置少量用户。如果用户上千就会效率非常低下,这时候就需要用到O365的powershell来批量重置了。 首先需要下载powersh...

李珣 ⋅ 2016/03/29 ⋅ 0

Office 365 系列之六:通过管理中心批量导入用户

本章节跟大家介绍通过 Office 365 管理中心批量导入用户并分配许可。 登陆 Office 365 管理中心,切换到“活动用户”页面,点击“批量添加” 点击“下载仅具有标头的 CSV 文件”或“下载具有...

Juck_Zhang ⋅ 2017/11/17 ⋅ 0

wget命令批量下载图片

批量下载图片(一般是某个相册的图片) 首先先得到一张图片的地址如:www.example.com/pic/001.jpg 同相册的图片地址会有一定的规律,可以用: $: echo www.example.com/pic/{001..020}.jpg...

杨军军 ⋅ 2011/03/19 ⋅ 1

SpringBoot文件上传下载

项目中经常会有上传和下载的需求,这篇文章简述一下springboot项目中实现简单的上传和下载。 新建springboot项目,前台页面使用的thymeleaf模板,其余的没有特别的配置,pom代码如下: 前台页...

dalaoyang ⋅ 04/10 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

推荐:并发情况下:Java HashMap 形成死循环的原因

在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历...

码代码的小司机 ⋅ 昨天 ⋅ 1

聊聊spring cloud gateway的RetryGatewayFilter

序 本文主要研究一下spring cloud gateway的RetryGatewayFilter GatewayAutoConfiguration spring-cloud-gateway-core-2.0.0.RC2-sources.jar!/org/springframework/cloud/gateway/config/G......

go4it ⋅ 昨天 ⋅ 0

创建新用户和授予MySQL中的权限教程

导读 MySQL是一个开源数据库管理软件,可帮助用户存储,组织和以后检索数据。 它有多种选项来授予特定用户在表和数据库中的细微的权限 - 本教程将简要介绍一些选项。 如何创建新用户 在MySQL...

问题终结者 ⋅ 昨天 ⋅ 0

android -------- 颜色的半透明效果配置

最近有朋友问我 Android 背景颜色的半透明效果配置,我网上看资料,总结了一下, 开发中也是常常遇到的,所以来写篇博客 常用的颜色值格式有: RGB ARGB RRGGBB AARRGGBB 这4种 透明度 透明度...

切切歆语 ⋅ 昨天 ⋅ 0

CentOS开机启动subversion

建立自启动脚本: vim /etc/init.d/subversion 输入如下内容: #!/bin/bash## subversion startup script for the server## chkconfig: 2345 90 10# description: start the subve......

随风而飘 ⋅ 昨天 ⋅ 0

Nginx + uwsgi @ubuntu

uwsgi 安装 sudo apt-get install python3-pip # 注意 ubuntu python3默认没有安装pippython3 -m pip install uwsgi 代码(test.py) def application(env, start_response): start_res......

袁祾 ⋅ 昨天 ⋅ 0

版本控制工具

CSV , SVN , GIT ,VSS

颖伙虫 ⋅ 昨天 ⋅ 0

【2018.06.19学习笔记】【linux高级知识 13.1-13.3】

13.1 设置更改root密码 13.2 连接mysql 13.3 mysql常用命令

lgsxp ⋅ 昨天 ⋅ 0

LVM

LVM: 硬盘划分分区成物理卷->物理卷组成卷组->卷组划分逻辑分区。 1.磁盘分区: fdisk /dev/sdb 划分几个主分区 输入t更改每个分区类型为8e(LVM) 使用partprobe生成分区的文件:如/dev/sd...

ZHENG-JY ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部