Java封装minio 工具类
时间: 2025-02-17 19:12:18 浏览: 121
### Java 封装 MinIO 工具类
为了方便在项目中使用 MinIO 进行对象存储操作,可以通过创建一个工具类来封装常见的 MinIO 操作方法。下面是一个基于 Spring Boot 和 MinIO SDK 的 Java 工具类示例。
#### Maven 依赖配置
首先,在项目的 `pom.xml` 文件中添加 MinIO SDK 的依赖:
```xml
<dependency>
<groupId>io.minio</groupId>
<artifactId|minio|version>8.5.7</version>
</dependency>
```
#### 创建 MinIOConfig 类
定义一个配置类用于初始化 MinIO 客户端连接参数:
```java
import io.minio.MinioClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MinIOConfig {
@Value("${minio.endpoint}")
private String endpoint;
@Value("${minio.accessKey}")
private String accessKey;
@Value("${minio.secretKey}")
private String secretKey;
@Bean
public MinioClient minioClient() {
return MinioClient.builder()
.endpoint(endpoint)
.credentials(accessKey, secretKey)
.build();
}
}
```
#### 构建 MinIOUtil 工具类
接下来构建实际的操作工具类,该类提供了上传文件、下载文件等功能的方法实现:
```java
import io.minio.*;
import io.minio.errors.*;
import java.io.InputStream;
import java.util.List;
@Component
public class MinIOUtil {
@Autowired
private MinioClient minioClient;
/**
* 判断桶是否存在
*/
public boolean bucketExists(String bucketName) throws Exception {
try {
return minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
} catch (Exception e) {
throw new RuntimeException(e.getMessage(), e);
}
}
/**
* 创建新桶
*/
public void makeBucket(String bucketName) throws Exception {
if (!bucketExists(bucketName)) {
minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
}
}
/**
* 删除指定名称的桶
*/
public void removeBucket(String bucketName) throws Exception {
minioClient.removeBucket(RemoveBucketArgs.builder().bucket(bucketName).build());
}
/**
* 向指定桶内上传文件流形式的数据
*/
public void uploadFile(String bucketName, String objectName, InputStream inputStream, long fileSize) throws Exception {
PutObjectArgs args = PutObjectArgs.builder()
.bucket(bucketName)
.object(objectName)
.stream(inputStream, fileSize, -1L)
.contentType("application/octet-stream")
.build();
minioClient.putObject(args);
}
/**
* 下载文件并返回输入流
*/
public InputStream downloadFile(String bucketName, String objectName) throws Exception {
GetObjectResponse response = minioClient.getObject(GetObjectArgs.builder()
.bucket(bucketName)
.object(objectName)
.build());
return response.readAllBytes();
}
/**
* 获取某个桶下的所有文件列表
*/
public List<String> listObjects(String bucketName) throws Exception {
Iterable<Result<Item>> results = minioClient.listObjects(ListObjectsArgs.builder().bucket(bucketName).build());
List<String> fileList = Lists.newArrayList();
for (Result<Item> result : results) {
Item item = result.get();
fileList.add(item.objectName());
}
return fileList;
}
/**
* 移除单个文件/对象
*/
public void removeObject(String bucketName, String objectName) throws Exception {
minioClient.removeObject(RemoveObjectArgs.builder().bucket(bucketName).object(objectName).build());
}
}
```
通过上述代码实现了对 MinIO 存储系统的常用功能封装,包括但不限于判断桶的存在状态、创建删除桶以及文件级别的增删改查等基础操作[^3]。
阅读全文
相关推荐















