阿里云oss批量打包下载,并压缩成zip文件

硅谷探秘者 java基础 97 0 0

java压缩文件参考:http://www.jiajiajia.club/blog/artical/1en1qpemej45/499

一、pom

<dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>2.2.3</version>
</dependency>

二、java代码


import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.OSSObject;

import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.Adler32;
import java.util.zip.CheckedOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class OssDownload {

    public static void main(String[] args) {

        String file = "D://data//downForZip.zip";

        List<String> list = new ArrayList();
        list.add("1.png");
        list.add("2.png");
        downForZip(list,file);
    }

    /**
     * 批量下载为zip
     * @param keyList oss文件路径集合
     * @param fileName 下载出来的zip文件名(一般以合同名命名) 如:测试合同,zip
     */
    public static void downForZip(List<String> keyList, String fileName){
        File zipFile = null;
        try {
            zipFile = File.createTempFile("test", ".zip");
            FileOutputStream f = new FileOutputStream(zipFile);
            CheckedOutputStream csum = new CheckedOutputStream(f, new Adler32());
            ZipOutputStream zos = new ZipOutputStream(csum);
            OSSClient ossClient= new OSSClient(
                    "endpoint",
                    "accessKeyId",
                    "secretAccessKey");
            for (String ossFile : keyList) {
                OSSObject ossObject = ossClient.getObject("bucketName", ossFile);
                InputStream inputStream = ossObject.getObjectContent();
                String name=ossFile.substring(ossFile.lastIndexOf("/")+1);
                zos.putNextEntry(new ZipEntry(name));
                int bytesRead = 0;
                while ((bytesRead = inputStream.read()) != -1) {
                    zos.write(bytesRead);
                }
                inputStream.close();
                zos.closeEntry();
            }
            zos.close();
            FileInputStream fis = new FileInputStream(zipFile);
            BufferedInputStream buff = new BufferedInputStream(fis);
            BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(new File(fileName)));
            byte[] car = new byte[1024];
            int l = 0;
            while (l < zipFile.length()) {
                int j = buff.read(car, 0, 1024);
                l += j;
                out.write(car, 0, j);
            }
            fis.close();
            buff.close();
            out.close();
            ossClient.shutdown();
            zipFile.delete();
        } catch (IOException e1) {
            e1.printStackTrace();
        }catch (Exception e) {
            e.printStackTrace();
        }
    }
}
猜你喜欢
java基础 101 核心类ZipOutputStream的api档请参考:https://nowjava.com/docs/java-api-11/java.base/java/util/zip
算法基础 201 装。node.js安装安装:https://nodejs.org/en/npm含在node.js中。安装uglifyjs:npminstalluglify-js@2-g@2的作用是指定
其他 969 首先你有一个网站和一个域名首先在中搜索ssl,点击SSL证书到控制台控制台购买完后点击证书申请,会让你填写认证信息提交完后会有一个CA审核的状态,不过审核过程应该很快。审核完后然后点击
工具 1654 pomdependencygroupIdnet.sf.json-lib/groupIdartifactIdjson-lib/artifactIdversion2.4
工具 622 javazip工具类packagecom.dzqc.yx.util;importjava.io.File;importjava.io.FileInputStream
算法基础 133 安装node第一步依然是安装node,node.js安装安装:https://nodejs.org/en/全局安装clean-cssnpminstall-gclean-css局部安装
weblog 1204 java使用easypoi导出excel简单导出测试如图:一、pomdependencygroupIdcn.afterturn/groupIdartifactIdeasypoi
工具 1392 esc服务器为了安全默认禁用25端口,所以会导致JavaMail发送邮失败。错误代码
归档
2018年11月  12 2018年12月  33 2019年01月  28 2019年02月  28 2019年03月  32 2019年04月  27 2019年05月  33 2019年06月  6 2019年07月  12 2019年08月  12 2019年09月  21 2019年10月  8 2019年11月  15 2019年12月  25 2020年01月  9 2020年02月  5 2020年03月  16 2020年04月  4 2020年06月  1 2020年07月  7 2020年08月  13 2020年09月  9 2020年10月  5 2020年12月  3 2021年01月  1 2021年02月  5 2021年03月  7 2021年04月  4 2021年05月  4 2021年06月  1 2021年07月  7 2021年08月  2 2021年09月  8 2021年10月  9 2021年11月  16 2021年12月  14 2022年01月  6
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git 消息中间件 搜索 maven redis docker dubbo vue 导入导出 软件使用 idea插件 协议 无聊的知识 jenkins springboot mqtt协议
目录
祝愿神州十三飞行乘组平安归来