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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JDK线程池和Spring线程池的使用实例解析

    JDK线程池和Spring线程池的使用实例解析

    这篇文章主要介绍了JDK线程池和Spring线程池的使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • 详解Java8的forEach(...)如何提供index值

    详解Java8的forEach(...)如何提供index值

    这篇文章主要介绍了详解Java8的forEach(...)如何提供index值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 聊聊为什么要使用BufferedReader读取File

    聊聊为什么要使用BufferedReader读取File

    这篇文章主要介绍了为什么要使用BufferedReader读取File,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Spring Boot应用配置常用相关视图解析器详解

    Spring Boot应用配置常用相关视图解析器详解

    这篇文章主要给大家介绍了关于Spring Boot应用配置常用相关视图解析器的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • 详解SpringCloud Finchley Gateway 统一异常处理

    详解SpringCloud Finchley Gateway 统一异常处理

    这篇文章主要介绍了详解SpringCloud Finchley Gateway 统一异常处理,非常具有实用价值,需要的朋友可以参考下
    2018-10-10
  • Mybatis中注解@MapKey的使用方式

    Mybatis中注解@MapKey的使用方式

    MyBatis使用@MapKey注解进行连表查询,返回一个Map集合,Map的key为每条记录的主键或指定字段,value为该记录的字段名称和字段值
    2024-12-12
  • java zxing合成复杂二维码图片示例详解

    java zxing合成复杂二维码图片示例详解

    这篇文章主要为大家介绍了java zxing合成复杂二维码图片示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • Java打印数组的三种方法整理

    Java打印数组的三种方法整理

    许多学编程专业的同学面试的时候,考官都会问到Java如何打印数组这样的问题,下面这篇文章主要给大家介绍了关于Java打印数组的三种方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • 浅谈SpringMVC中Interceptor和Filter区别

    浅谈SpringMVC中Interceptor和Filter区别

    这篇文章主要介绍了浅谈SpringMVC中Interceptor和Filter区别,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-04-04
  • springboot 在ftl页面上使用shiro标签的实例代码

    springboot 在ftl页面上使用shiro标签的实例代码

    这篇文章主要介绍了springboot 在ftl页面上使用shiro标签的实例代码,通过文字说明结合实例的形式给大家介绍的非常详细,需要的朋友参考下吧
    2018-05-05

最新评论