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

硅谷探秘者 Md java基础 1491 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基础 995 核心类ZipOutputStream的api档请参考:https://nowjava.com/docs/java-api-11/java.base/java/util/zip
算法基础 1597 装。node.js安装安装:https://nodejs.org/en/npm含在node.js中。安装uglifyjs:npminstalluglify-js@2-g@2的作用是指定
其他 1686 首先你有一个网站和一个域名首先在中搜索ssl,点击SSL证书到控制台控制台购买完后点击证书申请,会让你填写认证信息提交完后会有一个CA审核的状态,不过审核过程应该很快。审核完后然后点击
工具 2412 pomdependencygroupIdnet.sf.json-lib/groupIdartifactIdjson-lib/artifactIdversion2.4
工具 1492 javazip工具类packagecom.dzqc.yx.util;importjava.io.File;importjava.io.FileInputStream
算法基础 1106 安装node第一步依然是安装node,node.js安装安装:https://nodejs.org/en/全局安装clean-cssnpminstall-gclean-css局部安装
weblog 2459 java使用easypoi导出excel简单导出测试如图:一、pomdependencygroupIdcn.afterturn/groupIdartifactIdeasypoi
工具 2331 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  7 2022-05  1 2022-08  3 2022-09  2 2022-10  2 2022-12  5 2023-01  3 2023-02  1 2023-03  4 2023-04  2 2023-06  3 2023-07  4 2023-08  1 2023-10  1 2024-02  1 2024-03  1 2024-04  1
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git 消息中间件 搜索 maven redis docker dubbo vue 导入导出 软件使用 idea插件 协议 无聊的知识 jenkins springboot mqtt协议 keepalived minio mysql ensp 网络基础 xxl-job rabbitmq haproxy srs 音视频 webrtc javascript
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。