java拷貝指定目錄下所有內(nèi)容到minIO代碼實例
MinIO及java工具類
minIO知識及java客戶端內(nèi)容詳情見上篇 MinIO的常用操作示例
本文主要記錄 把指定目錄下全部內(nèi)容遞歸寫入MinIO中。
創(chuàng)建 桶及文件夾
創(chuàng)建桶
直接使用工具類先判斷,再創(chuàng)建即可
創(chuàng)建文件夾
需要注意以“/”結尾,實際也是在minIO上創(chuàng)建文件,只是作為目錄的表現(xiàn)形式展示。
代碼如下:
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("創(chuàng)建桶失敗!").build();
}
//以每個訓練每個版本 創(chuàng)建一個文件夾 文件夾必須以 / 結尾
trainNameVersion = versionPO.getTrainName() + "-" + versionPO.getVersionNo() + "/";
if (!minIOUtil.listObjects(bucketName, trainNameVersion).iterator().hasNext()
&& !minIOUtil.mkdir(bucketName, trainNameVersion)) {
return AIPRet.<String>builder().success(false).message("創(chuàng)建文件夾" + 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拷貝指定目錄下所有內(nèi)容到minIO代碼實例的文章就介紹到這了,更多相關java拷貝內(nèi)容到minIO內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
詳解Java8的forEach(...)如何提供index值
這篇文章主要介紹了詳解Java8的forEach(...)如何提供index值,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-03-03
詳解SpringCloud Finchley Gateway 統(tǒng)一異常處理
這篇文章主要介紹了詳解SpringCloud Finchley Gateway 統(tǒng)一異常處理,非常具有實用價值,需要的朋友可以參考下2018-10-10
淺談SpringMVC中Interceptor和Filter區(qū)別
這篇文章主要介紹了淺談SpringMVC中Interceptor和Filter區(qū)別,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-04-04
springboot 在ftl頁面上使用shiro標簽的實例代碼
這篇文章主要介紹了springboot 在ftl頁面上使用shiro標簽的實例代碼,通過文字說明結合實例的形式給大家介紹的非常詳細,需要的朋友參考下吧2018-05-05

