Java中使用MinIO的常用操作示例
MinIO簡介
MinIO 是一款基于Go語言發(fā)開的高性能、分布式的對象存儲系統(tǒng)。客戶端支持Java,Net,Python,Javacript, Golang語言。
MinIO 英文官網(wǎng) 中文官網(wǎng) 注:中文官方更新不及時,會有很多坑,最好以英文官網(wǎng)為準
基礎概念
1、Object:存儲到minio的基本對象,如圖片、文件,字節(jié)流,Anything
2、Bucket:用來存儲Object的邏輯空間。每個Bucket之間的數(shù)據(jù)是互相隔離的。對于客戶端而言,就相當于存放文件的頂層文件夾。
應用場景
非常適合于存儲大容量非結構化的數(shù)據(jù),例如圖片、視頻、日志文件、備份數(shù)據(jù)和容器/虛擬機鏡像等,而一個對象文件可以是任意大小,從 KB 到最大 TB 不等
Java客戶端連接及操作代碼示例
pom依賴引入
<dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>8.4.3</version> </dependency>
Java連接操作
application.yml 配置文件 增加minio 地址及用戶名密碼的配置
minio: endpoint: http://xx.xx.xx.xx:xxxx accessKey: xxxx secretKey: xxxx
java工具類,獲取客戶端、查詢、創(chuàng)建桶、對象等
import io.minio.*; import io.minio.errors.*; import io.minio.messages.Item; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; @Slf4j @Service public class MinIOUtil { @Value("${minio.endpoint}") private String endpoint; @Value("${minio.accessKey}") private String accessKey; @Value("${minio.secretKey}") private String secretKey; private MinIOUtil() { } private MinioClient getClient() { return MinioClient.builder() .endpoint(this.endpoint) .credentials(this.accessKey, this.secretKey) .build(); } public boolean bucketExists(String bucketName) { try { return getClient().bucketExists( BucketExistsArgs.builder() .bucket(bucketName) .build()); } catch (Exception ex) { log.error("bucketExists異常", ex); return false; } } public boolean makeBucket(String bucketName) { try { getClient().makeBucket( MakeBucketArgs.builder() .bucket(bucketName) .build()); } catch (Exception ex) { log.error("makeBucket異常", ex); return false; } log.debug("makeBucket成功:{}", bucketName); return true; } public boolean mkdir(String bucketName, String dir) { try { getClient().putObject( PutObjectArgs.builder() .bucket(bucketName) .object(dir) .stream(new ByteArrayInputStream(new byte[] {}), 0, -1) .build()); } catch (Exception ex) { log.error("mkdir異常", ex); return false; } return true; } public boolean putObject(String bucketName, String objName, InputStream inputStream) { try { getClient().putObject( PutObjectArgs.builder() .bucket(bucketName) .object(objName) .stream(inputStream, inputStream.available(), -1) .build()); } catch (Exception ex) { log.error("putObject異常,bucketName:{},objName:{}", bucketName, objName, ex); return false; } log.debug("putObject成功,bucketName:{},objName:{}", bucketName, objName); return true; } public Iterable<Result<Item>> listObjects(String bucketName, String prefix) { return getClient().listObjects(ListObjectsArgs.builder() .bucket(bucketName) .prefix(prefix) .build()); } public InputStream getObject(String bucketName, String objName) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException { return getClient().getObject( GetObjectArgs.builder() .bucket(bucketName) .object(objName) .build()); } public boolean removeObject(String bucketName, String objName) { try { getClient().removeObject( RemoveObjectArgs.builder() .bucket(bucketName) .object(objName) .build()); } catch (Exception ex) { log.error("removeObject異常", ex); return false; } return true; } }
到此這篇關于Java中使用MinIO的常用操作示例的文章就介紹到這了,更多相關MinIO的常用操作內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
springboot內置tomcat調優(yōu)并發(fā)線程數(shù)解析
這篇文章主要介紹了springboot內置tomcat調優(yōu)并發(fā)線程數(shù)解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12maven中profile動態(tài)打包不同環(huán)境配置文件的實現(xiàn)
開發(fā)項目時會遇到這個問題:開發(fā)環(huán)境,測試環(huán)境,生產環(huán)境的配置文件不同, 打包時經常要手動更改配置文件,本文就來介紹一下maven中profile動態(tài)打包不同環(huán)境配置文件的實現(xiàn),感興趣的可以了解一下2023-10-10SpringBoot使用Prometheus采集自定義指標數(shù)據(jù)的方法詳解
隨著微服務在生產環(huán)境大規(guī)模部署和應用,隨之而來也帶來了新的問題,其中比較關鍵的就是關于微服務的運維和監(jiān)控,本文將結合微服務運維監(jiān)控中的指標監(jiān)控進行詳細的說明,需要的朋友可以參考下2024-07-07springcloud nacos的賦值均衡和動態(tài)刷新
nacos是一個分布式的配置中心和注冊發(fā)現(xiàn)中心,這篇文章主要介紹了springcloud nacos的賦值均衡和動態(tài)刷新,需要的朋友可以參考下2024-05-05postman中POST請求時參數(shù)包含參數(shù)list設置方式
這篇文章主要介紹了postman中POST請求時參數(shù)包含參數(shù)list設置方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05