java操作minio
时间: 2025-06-14 13:54:49 浏览: 17
### Java MinIO SDK 使用教程
#### 初始化客户端
为了使用MinIO对象存储服务,在Java应用程序中初始化`MinioClient`实例是必要的。这可以通过指定端点、访问密钥和秘密密钥来完成[^1]。
```java
import io.minio.MinioClient;
// ...
MinioClient minioClient = new MinioClient(
"https://play.min.io", // 替换为实际的MinIO服务器URL
"YOUR-ACCESSKEYID", // 访问密钥ID
"YOUR-SECRETACCESSKEY" // 秘密访问键
);
```
#### 创建桶
创建一个新的存储桶用于保存文件或其他数据对象之前,应该先确认该名称未被占用。如果不存在,则可以调用`makeBucket()`方法创建新桶。
```java
boolean isExist = minioClient.bucketExists("my-bucketname");
if (!isExist) {
minioClient.makeBucket("my-bucketname");
}
```
#### 文件上传
向已存在的桶内上传文件可通过`putObject()`函数实现。此过程允许设置自定义元数据以及配置其他选项如加密参数等。
```java
minioClient.putObject(
"my-bucketname",
"my-objectname",
"/tmp/myfile.zip"
);
```
#### 下载文件
下载特定的对象到本地磁盘上可利用`getObject()`命令执行。这里同样支持流式读取大尺寸资源而不必一次性加载整个文件入内存。
```java
InputStream stream = minioClient.getObject("my-bucketname","my-objectname");
FileOutputStream outputStream = new FileOutputStream(new File("/path/to/save"));
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = stream.read(buffer, 0, 4096)) >= 0) {
outputStream.write(buffer, 0, bytesRead);
}
outputStream.close();
stream.close();
```
#### 列举对象列表
获取某个桶内的所有对象名及其基本信息能够通过迭代器模式轻松达成目标。对于分页查询场景也提供了相应的方法处理大量条目情况下的性能优化需求。
```java
Iterable<Result<Item>> results = minioClient.listObjects("my-bucketname");
for (Result<Item> result : results) {
Item item = result.get();
System.out.println(item.lastModified() + ", " + item.size() + ", "
+ item.objectName());
}
```
阅读全文
相关推荐

















