java拷貝指定目錄下所有內(nèi)容到minIO代碼實(shí)例
MinIO及java工具類
minIO知識(shí)及java客戶端內(nèi)容詳情見上篇 MinIO的常用操作示例
本文主要記錄 把指定目錄下全部?jī)?nèi)容遞歸寫入MinIO中。
創(chuàng)建 桶及文件夾
創(chuàng)建桶
直接使用工具類先判斷,再創(chuàng)建即可
創(chuàng)建文件夾
需要注意以“/”結(jié)尾,實(shí)際也是在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(); } //以每個(gè)訓(xùn)練每個(gè)版本 創(chuàng)建一個(gè)文件夾 文件夾必須以 / 結(jié)尾 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上。代碼如下:
調(diào)用代碼:
for (AITrainVOutputConfigPO out : outList) { String outUrl = out.getTrainUrl(); if (!this.writeFilesToMinIO(outUrl, bucketName, trainNameVersion)) { return AIPRet.<String>builder().success(false).message("導(dǎo)出文件目錄" + outUrl + "失?。?).build(); } }
writeFilesToMinIO 寫入MinIO方法 注意:這里判斷目錄還是文件,如果是目錄,進(jìn)行遞歸調(diào)用。
/** * * @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; }
到此這篇關(guān)于java拷貝指定目錄下所有內(nèi)容到minIO代碼實(shí)例的文章就介紹到這了,更多相關(guān)java拷貝內(nèi)容到minIO內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Java8的forEach(...)如何提供index值
這篇文章主要介紹了詳解Java8的forEach(...)如何提供index值,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03Spring Boot應(yīng)用配置常用相關(guān)視圖解析器詳解
這篇文章主要給大家介紹了關(guān)于Spring Boot應(yīng)用配置常用相關(guān)視圖解析器的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12詳解SpringCloud Finchley Gateway 統(tǒng)一異常處理
這篇文章主要介紹了詳解SpringCloud Finchley Gateway 統(tǒng)一異常處理,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2018-10-10淺談SpringMVC中Interceptor和Filter區(qū)別
這篇文章主要介紹了淺談SpringMVC中Interceptor和Filter區(qū)別,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-04-04springboot 在ftl頁(yè)面上使用shiro標(biāo)簽的實(shí)例代碼
這篇文章主要介紹了springboot 在ftl頁(yè)面上使用shiro標(biāo)簽的實(shí)例代碼,通過(guò)文字說(shuō)明結(jié)合實(shí)例的形式給大家介紹的非常詳細(xì),需要的朋友參考下吧2018-05-05