java拷贝指定目录下所有内容到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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
详解Java8的forEach(...)如何提供index值
这篇文章主要介绍了详解Java8的forEach(...)如何提供index值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2021-03-03
详解SpringCloud Finchley Gateway 统一异常处理
这篇文章主要介绍了详解SpringCloud Finchley Gateway 统一异常处理,非常具有实用价值,需要的朋友可以参考下2018-10-10
浅谈SpringMVC中Interceptor和Filter区别
这篇文章主要介绍了浅谈SpringMVC中Interceptor和Filter区别,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2019-04-04
springboot 在ftl页面上使用shiro标签的实例代码
这篇文章主要介绍了springboot 在ftl页面上使用shiro标签的实例代码,通过文字说明结合实例的形式给大家介绍的非常详细,需要的朋友参考下吧2018-05-05


最新评论