java拷贝指定目录下所有内容到minIO代码实例

 更新时间:2024年01月24日 09:22:17   作者:祺稷  
这篇文章主要介绍了java拷贝指定目录下所有内容到minIO代码实例,创建桶 直接使用工具类先判断,再创建即可,创建文件夹,需要注意以"/"结尾,实际也是在minIO上创建文件,只是作为目录的表现形式展示,需要的朋友可以参考下

MinIO及java工具类

minIO知识及java客户端内容详情见上篇 MinIO的常用操作示例

本文主要记录 把指定目录下全部内容递归写入MinIO中。

创建 桶及文件夹

创建桶

直接使用工具类先判断,再创建即可

创建文件夹

需要注意以“/”结尾,实际也是在minIO上创建文件,只是作为目录的表现形式展示。

代码如下:

List<AITrainVOutputConfigPO> outList = versionPO.getOutputList();
        String bucketName = null;
        String trainNameVersion = null;
        if (!outList.isEmpty()) {
            bucketName = Constants.AI_TRAIN_BUCKET_NAME;
            if (!minIOUtil.bucketExists(bucketName) && !minIOUtil.makeBucket(bucketName)) {
                return AIPRet.<String>builder().success(false).message("创建桶失败!").build();
            }
            //以每个训练每个版本 创建一个文件夹 文件夹必须以 / 结尾
            trainNameVersion = versionPO.getTrainName() + "-" + versionPO.getVersionNo() + "/";
            if (!minIOUtil.listObjects(bucketName, trainNameVersion).iterator().hasNext()
                    && !minIOUtil.mkdir(bucketName, trainNameVersion)) {
                return AIPRet.<String>builder().success(false).message("创建文件夹" + trainNameVersion + "失败!").build();
            }
        }

指定目录下所有文件拷贝到MinIO

把指定目录下所有文件及子目录及其下所有文件拷贝到MinIO上。代码如下:

调用代码:

		for (AITrainVOutputConfigPO out : outList) {
            String outUrl = out.getTrainUrl();
            if (!this.writeFilesToMinIO(outUrl, bucketName, trainNameVersion)) {
                return AIPRet.<String>builder().success(false).message("导出文件目录" + outUrl + "失败!").build();
            }
        }

writeFilesToMinIO 写入MinIO方法 注意:这里判断目录还是文件,如果是目录,进行递归调用。

/**
     *
     * @param dir 待拷贝的目录
     * @param bucketName minIO的桶名称
     * @param path minIO上的路径名称
     * @return 写到minIO是否成功
*/
private boolean writeFilesToMinIO(String dir, String bucketName, String path) {
        boolean flag = true;
        File file = Paths.get(dir).toFile();
        File[] files = file.listFiles();
        try {
            assert files != null;
            for (File f : files) {
                log.info("文件路径:" + f.getPath());
                log.info("文件名称:" + f.getName());
                if (f.isDirectory()) {
                    minIOUtil.mkdir(bucketName, path + f.getName() + "/");
                    writeFilesToMinIO(f.getPath(), bucketName, path + f.getName() + "/");
                } else {
                    try (InputStream inputStream = Files.newInputStream(f.toPath())) {
                        minIOUtil.putObject(bucketName, path + f.getName(), inputStream);
                    }
                }
            }
        } catch (Exception ex) {
            flag = false;
            log.error("写入MinIO异常", ex);
        }
        return flag;
    }

到此这篇关于java拷贝指定目录下所有内容到minIO代码实例的文章就介绍到这了,更多相关java拷贝内容到minIO内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 利用Java代码写一个并行调用模板

    利用Java代码写一个并行调用模板

    这篇文章主要介绍了利用Java代码写一个并行调用模板,文章基于Java的相关内容展开写一个并行调用模板的详细介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-05-05
  • Java中的TreeSet源码解读

    Java中的TreeSet源码解读

    这篇文章主要介绍了Java中的TreeSet源码解读,TreeSet 是一个 有序集合,它扩展了 AbstractSet 类并实现了 NavigableSet 接口,对象根据其自然顺序以升序排序和存储,该 TreeSet 中使用 平衡树,更具体的一个 红黑树,需要的朋友可以参考下
    2023-09-09
  • 手把手带你用java搞定青蛙跳台阶

    手把手带你用java搞定青蛙跳台阶

    这篇文章主要给大家介绍了关于Java青蛙跳台阶问题的解决思路与代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-08-08
  • JAVA中StringBuffer与String的区别解析

    JAVA中StringBuffer与String的区别解析

    这篇文章主要介绍了JAVA中StringBuffer与String的区别解析,需要的朋友可以参考下
    2014-02-02
  • Java数据结构与算法之双向链表、环形链表及约瑟夫问题深入理解

    Java数据结构与算法之双向链表、环形链表及约瑟夫问题深入理解

    这篇文章主要介绍了Java数据结构与算法之双向链表、环形链表及约瑟夫问题深入理解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • java 实现黄金分割数的示例详解

    java 实现黄金分割数的示例详解

    这篇文章主要介绍了java 实现黄金分割数的示例详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • SpringBoot使用RabbitMQ延时队列(小白必备)

    SpringBoot使用RabbitMQ延时队列(小白必备)

    这篇文章主要介绍了SpringBoot使用RabbitMQ延时队列(小白必备),详细的介绍延迟队列的使用场景及其如何使用,需要的小伙伴可以一起来了解一下
    2019-12-12
  • Java日常练习题,每天进步一点点(40)

    Java日常练习题,每天进步一点点(40)

    下面小编就为大家带来一篇Java基础的几道练习题(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望可以帮到你
    2021-07-07
  • mybatis嵌套循环map方式(高级用法)

    mybatis嵌套循环map方式(高级用法)

    这篇文章主要介绍了mybatis嵌套循环map方式(高级用法),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • Java多线程的同步优化的6种方案

    Java多线程的同步优化的6种方案

    大家使用多线程无非是为了提高性能,在Java中,有多线程并发时,我们可以使用多线程同步的方式来解决内存一致性的问题。本文就详细的介绍了Java多线程同步优化,感兴趣的可以了解一下
    2021-05-05

最新评论