通过minio服务器压缩文件的下载和解压

这篇具有很好参考价值的文章主要介绍了通过minio服务器压缩文件的下载和解压。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1:下载压缩文件到本地服务器

    //下载压缩文件
    public static void main(String[] args) {
        try {
            // 初始化MinIO客户端
            MinioClient minioClient = MinioClient.builder()
                    .endpoint("http://" + "192.168.16.188:9000")
                    .credentials("admin", "admin123456")
                    .build();

            // 下载压缩文件到本地文件系统,在temp生成的临时文件
            File zipFile = File.createTempFile("example", ".zip");
            log.info("zipFile=====" + zipFile.getPath());
            minioClient.downloadObject(DownloadObjectArgs.builder().bucket("otatest").object("ya2.zip").filename(zipFile.getAbsolutePath()).build());
    }

2:先下载压缩文件,解压出里面的文件,下载到本地服务器指定位置,注意这种下载方式很慢,同时需要注意下载的文件夹目录是否有,不然那会报错

    @SneakyThrows
    public static void main(String[] args) {

        try {
            // 初始化MinIO客户端
            MinioClient minioClient = MinioClient.builder()
                    .endpoint("http://" + "192.168.16.188:9000")
                    .credentials("admin", "admin123456")
                    .build();

            // 下载压缩文件到本地文件系统
            File zipFile = File.createTempFile("example", ".zip");
            log.info("zipFile=====" + zipFile.getPath());
            minioClient.downloadObject(DownloadObjectArgs.builder().bucket("otatest").object("模板2.zip").filename(zipFile.getAbsolutePath()).build());
            // 解压文件
            ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(zipFile),Charset.forName("GBK"));
            ZipEntry zipEntry = zipInputStream.getNextEntry();
            while (zipEntry != null) {
                File entryFile = new File(zipEntry.getName());
                File file = new File("C:\\Users\\dell\\Desktop\\22\\" + StringUtils.getFilename(entryFile.getName()));
                org.springframework.util.FileCopyUtils.copy(entryFile, file);
                zipEntry = zipInputStream.getNextEntry();
            }
            zipInputStream.closeEntry();
            zipInputStream.close();

            // 删除本地的压缩文件
            zipFile.delete();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

3:获取压缩文件流(这种方式比下载压缩文件快),解压出里面的文件,下载到本地服务器指定位置,注意这种下载方式很慢,同时需要注意下载的文件夹目录是否有,不然那会报错

    @SneakyThrows
    public static void main(String[] args) {
        MinioClient minioClient = MinioClient.builder()
                .endpoint("http://" + "192.168.16.188:9000")
                .credentials("admin", "admin123456")
                .build();
        CustomMinioClient customMinioClient = new CustomMinioClient(minioClient);
        ZipInputStream zis = null;
        long s = System.currentTimeMillis();
//        try (InputStream is = customMinioClient.getObject(GetObjectArgs.builder().bucket(getBucket()).object(objectName).build())) {
        try (InputStream is = customMinioClient.getObject(GetObjectArgs.builder().bucket("otatest").object("模板.zip").build())) {
            System.out.println(System.currentTimeMillis() - s);
            // 创建ZipInputStream,用于读取ZIP文件
            zis = new ZipInputStream(is, Charset.forName("UTF-8"));
            // 遍历ZIP文件中的所有条目
            ZipEntry entry;
            while ((entry = zis.getNextEntry()) != null) {
                // 如果当前条目是目录,则创建目录
                if (entry.isDirectory()) {
                    new File(entry.getName()).mkdirs();
                } else {
                    // 如果当前条目是文件,则解压缩该文件
                    FileOutputStream fos = new FileOutputStream(StringUtils.getFilename(entry.getName()));
                    byte[] buffer = new byte[1024];
                    int len;
                    while ((len = zis.read(buffer)) > 0) {
                        fos.write(buffer, 0, len);
                    }
                    fos.close();
                    zis.closeEntry();
                    //删除下载的文件
                    Files.delete(Paths.get(StringUtils.getFilename(entry.getName())));

                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 关闭ZipInputStream
            if (zis != null) {
                zis.close();
            }
        }

    }

4:获取压缩文件流(这种方式比下载压缩文件快),获取压缩文件里的每一个文件流,进行操作,上传到minio

    @SneakyThrows
    public static void main(String[] args) {
        MinioClient minioClient = MinioClient.builder()
                .endpoint("http://" + "192.168.16.188:9000")
                .credentials("admin", "admin123456")
                .build();
        CustomMinioClient customMinioClient = new CustomMinioClient(minioClient);
        ZipInputStream zis = null;
        try (InputStream is = customMinioClient.getObject(GetObjectArgs.builder().bucket("otatest").object("模板.zip").build())) {
            // 创建ZipInputStream,用于读取ZIP文件
            zis = new ZipInputStream(is, Charset.forName("GBK"));
            // 遍历ZIP文件中的所有条目
            ZipEntry entry;
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            byte[] bytes = new byte[1024];
            while ((entry = zis.getNextEntry()) != null) {
                // 如果当前条目是目录,则创建目录
                if (entry.isDirectory()) {
                    new File(entry.getName()).mkdirs();
                } else {
                    while (true) {
                        int len = zis.read(bytes);
                        if (len <= 0) {
                            break;
                        }
                        bos.write(bytes);
                    }
                    bos.flush();
                    bos.close();
                    zis.closeEntry();
                    InputStream bis = new ByteArrayInputStream(bos.toByteArray());
                    minioClient.putObject(PutObjectArgs.builder()
                            .bucket("otatest")
                            .object(entry.getName())
                            .stream(bis, -1L, 10485760L)
                            .build());
                    bis.close();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 关闭ZipInputStream
            if (zis != null) {
                zis.close();
            }
        }

    }

5:可以从压缩文件下载指定的文件

@SneakyThrows
    public static void main13(String[] args) {
        MinioClient minioClient = MinioClient.builder()
                .endpoint("http://" + "192.168.16.188:9000")
                .credentials("admin", "admin123456")
                .build();
        CustomMinioClient customMinioClient = new CustomMinioClient(minioClient);
        ZipInputStream zipIn = null;
        InputStream is = customMinioClient.getObject(GetObjectArgs.builder().bucket("otatest").object("模板.zip").build());
            // 创建ZipInputStream,用于读取ZIP文件
            zipIn = new ZipInputStream(is, Charset.forName("GBK"));
            // 遍历ZIP文件中的所有条目
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            byte[] bytes = new byte[1024];
            ZipEntry zipEntry;
            //查询下载名字,可以是数组这样就可以下载多个文件,但是要修改逻辑代码
            String[] files = {"java.txt"};
            while ((zipEntry = zipIn.getNextEntry()) != null) {
                for (String fileName:files) {
                    if (zipEntry.getName().equals(fileName)) {
                        while (true) {
                            int len = zipIn.read(bytes);
                            if (len <= 0) {
                                break;
                            }
                            bos.write(bytes);
                        }
                        bos.flush();
                        bos.close();
                    }
                }
            }
            InputStream bis = new ByteArrayInputStream(bos.toByteArray());
            bos.close();
            zipIn.closeEntry();
            zipIn.close();
            bis.close();
        
    }

6:获取压缩文件流(这种方式比下载压缩文件快),获取压缩文件里的每一个文件流,进行操作,上传到minio,这种方式推荐使用,最快

    @SneakyThrows
    public static void main(String[] args) {
        MinioClient minioClient = MinioClient.builder()
                .endpoint("http://" + "192.168.16.188:9000")
                .credentials("admin", "admin123456")
                .build();
        CustomMinioClient customMinioClient = new CustomMinioClient(minioClient);
        ZipInputStream zipIn = null;
        try {
            InputStream is = customMinioClient.getObject(GetObjectArgs.builder().bucket("otatest").object("模板.zip").build());
            // 创建ZipInputStream,用于读取ZIP文件
            zipIn = new ZipInputStream(is, Charset.forName("GBK"));
            // 遍历ZIP文件中的所有条目
            ZipEntry zipEntry;
            //查询下载名字,可以是数组这样就可以下载多个文件,但是要修改逻辑代码
            int i = 11;
            while ((zipEntry = zipIn.getNextEntry()) != null) {
                ++i;
                if (zipEntry.getSize() == 0) continue;
                minioClient.putObject(PutObjectArgs.builder()
                        .bucket("otatest")
                        .object(i + "")
                        .stream(zipIn, -1L, 10485760L)
                        .build());
                zipIn.closeEntry();
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (zipIn!=null) zipIn.closeEntry();
            if (zipIn!=null) zipIn.close();

        }
    }

文章来源地址https://www.toymoban.com/news/detail-588679.html

到了这里,关于通过minio服务器压缩文件的下载和解压的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • zip压缩包上传到了服务器怎么解压——提示unzip:command not found

    xshell进入压缩包所在的文件夹 如果你已经将zip压缩包上传到了服务器,可以使用以下命令解压缩: 其中,file.zip为你上传的zip压缩包的文件名。执行该命令后,zip压缩包中的所有文件将被解压到当前目录中。 如果你希望将解压后的文件解压到指定目录中,可以使用以下命令

    2023年04月09日
    浏览(37)
  • windows通过ssh连接Liunx服务器并实现上传下载文件

    目录 连接ssh 操作方式 下载上传文件 特别提醒 操作方式 示例 前言-与正文无关         生活远不止眼前的苦劳与奔波,它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界中,我们往往容易陷入工作的漩涡,忘记了停下脚步,感受周围的世界。让我们一

    2024年02月02日
    浏览(87)
  • Shell脚本常用命令及如何通过shell脚本实现服务器上文件的上传和下载

    Shell脚本常用命令 简介 1、什么是shell: Shell 是一个用 C 语言编写的应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Shell 脚本(shell script),是一种为 shell 编写的脚本程序,扩展名为.sh。 2、如何编写shell脚本: 文本编辑器(可以使用

    2024年02月03日
    浏览(53)
  • 图片、文件资源服务器(minio服务器)

    1.MinioConfig配置类 2.MinioUtil工具类 3.对应使用方法

    2024年02月11日
    浏览(44)
  • minio文件服务器开启https

    一、准备证书 你要有https安全证书,我的是适用于nginx的证书 私钥  xxxx.key 公钥  xxxx.pem 二、上传证书到minio服务器 然后看看你的minio docker 有没有把 /root/.minio 挂载在主机上,如果有那么把两个证书文件放在/root/.minio/certs目录里面。 三、重启生效 最后重启minio容器就行了 四

    2024年02月10日
    浏览(42)
  • 服务器使用——解压常见文件tar、zip、rar等

    1.tar文件 2.zip文件 这篇关于zip博客写的挺全的,这里直接放链接。 3.rar文件 首先下载RAR 6.21 for Linux x64 下载完后安装: 加压后可以看到有一个rar.txt,里面有rar具体的使用方法。这里粘贴复制下来

    2024年02月10日
    浏览(40)
  • MinIO文件服务器,从安装到使用

    以往的项目,用的比较多的OSS服务是腾讯云和阿里云的存储服务,不过从去年到今年,最近的几个项目,普遍要使用Minio,所以我在开发服务器和测试服务器上都装上了minio 一、首先minio的安装 MInIO的安装有很多方法、单实例的、集群分布式的、docker部署的、支持k8s的,我们使

    2024年02月06日
    浏览(30)
  • Minio服务器如何设置默认文件大小

    在Minio服务器中,可以通过修改配置文件来设置默认的文件大小限制。 要更改默认文件大小限制,您可以按照以下步骤进行操作: 打开Minio服务器的配置文件。该文件通常位于 /etc/sysconfig/minio 或 /etc/default/minio (对于Ubuntu系统) 在配置文件中找到 MINIO_HTTP.Addr 一行,这是Min

    2024年02月10日
    浏览(37)
  • Java 上传文件到MinIO服务器上

    一、MinIO配置 主界面: 2.创建桶的文件路径 你可以设置任意想要配置的路径  3.管理桶权限 这里Prefix写 * 是为了匹配所有请求路径 Access: readonly就可以通过url访问图片了。 二、SpringBoot Maven项目: 导入坐标:  三、配置application.yml文件 四、编写读取配置类 五、创建工具类 六

    2024年02月08日
    浏览(37)
  • SpringBoot上传文件到Minio服务器,支持批量上传

    本文主要介绍如何使用SpringBoot上传到minio服务器。 没什么可多说的,公司用什么咱们开发研究什么就完事了。直接分享核心代码。 minio依赖 配置文件 首先是核心的参数,包括服务器minio地址,以及用户名密码,使用的桶名称 controller代码 如果只需要上传文件,只需要Multipa

    2024年02月08日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包