• 周六. 10 月 5th, 2024

5G编程聚合网

5G时代下一个聚合的编程学习网

热门标签

CNCF对象存储工具之MinIO:6:Java API的使用更新

King Wang

1 月 3, 2022

在这里插入图片描述
上篇文章中使用了MinIO中文官网的Java API示例进行了验证,版本与当前稳定版本相比过旧,在英文官网发现了最新的API使用方式,在此文中进行验证。

目录

  • 旧版验证详细
  • 升至7.1.4版本的问题
  • 使用示例
    • Pom文件
    • 代码示例
    • 执行与结果确认
  • 总结

旧版验证详细

MinIO Java Client SDK(3.0.10)的使用示例可参看如下内容:

  • https://liumiaocn.blog.csdn.net/article/details/109460948

升至7.1.4版本的问题

Maven使用如下版本之后,上述代码编译无法通过

<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>7.1.4</version>
</dependency>

主要问题如下:

  • MinioClient的构造函数方式变为从builder里获取

修改前:MinioClient minioClient = new MinioClient(“http://localhost:9000”, “liumiao”, “password”);

修改后:

MinioClient minioClient =MinioClient.builder()
.endpoint("http://localhost:9000")
.credentials("liumiao", "password")
.build();
  • 检查存储桶是否存在的方式

修改前:boolean isExist = minioClient.bucketExists(“newbucket”);

修改后:boolean isExist = minioClient.bucketExists(BucketExistsArgs.builder().bucket(“newbucket”).build());

同时需要将 io.minio.BucketExistsArgs给import进来,官方最新示例中缺少此行内容

  • 创建存储桶的方式

修改前:minioClient.makeBucket(“newbucket”);

修改后:minioClient.makeBucket(MakeBucketArgs.builder().bucket(“newbucket”).build());

添加如下import内容

import io.minio.MakeBucketArgs;

  • 文件上传的方式
    由于文件上传的函数添加了第四个参数,所以旧版程序可能会编译无法通过

修改前:minioClient.putObject(“newbucket”,“local-file-list.info”, “/Users/liumiao/local-file-list.info”);

修改后:minioClient.putObject(“newbucket”,“local-file-list.info”, “/Users/liumiao/local-file-list.info”,null);

目前官方的示例也是使用这种方式,但是这种写法在MinIO中依然是depressed,所以可以使用如下的方式:

minioClient.uploadObject(UploadObjectArgs.builder()
.bucket("anotherbucket").object("local-file-list.info").filename("/Users/liumiao/local-file-list.info").build());

使用示例

Pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>liumiaocn</groupId>
<artifactId>minio</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>7.1.4</version>
</dependency>
</dependencies>
</project>

代码示例

import io.minio.BucketExistsArgs;
import io.minio.MakeBucketArgs;
import io.minio.UploadObjectArgs;
import java.io.IOException;
import java.security.NoSuchAlgorithmException;
import java.security.InvalidKeyException;
import io.minio.MinioClient;
import io.minio.errors.MinioException;
public class MinIOFileUploader {

public static void main(String[] args) throws NoSuchAlgorithmException, IOException, InvalidKeyException {

try {

// 使用MinIO服务的URL,端口,Access key和Secret key创建一个MinioClient对象
MinioClient minioClient =MinioClient.builder()
.endpoint("http://localhost:9000")
.credentials("liumiao", "password")
.build();
// 检查存储桶是否已经存在
boolean isExist = minioClient.bucketExists(BucketExistsArgs.builder().bucket("anotherbucket").build());
if(isExist) {

System.out.println("Bucket already exists.");
} else {

// 创建一个名为newbucket的存储桶。
minioClient.makeBucket(MakeBucketArgs.builder().bucket("anotherbucket").build());
}
// 使用putObject上传一个文件到存储桶中。
minioClient.uploadObject(UploadObjectArgs.builder()
.bucket("anotherbucket").object("local-file-list.info").filename("/Users/liumiao/local-file-list.info").build());
System.out.println("/Users/liumiao/local-file-list.info is successfully uploaded as local-file-list.info to `anotherbucket` bucket.");
} catch(MinioException e) {

System.out.println("Error occurred: " + e);
}
}
}

执行与结果确认

这里将存储桶的名称改为anotherbucket,执行并确认结果如下

  • 执行上述程序
    在这里插入图片描述
    然后从MinIO中就可以看到创建的新存储桶和文件的信息了
    在这里插入图片描述

总结

这篇文章继续更新了一下最新版本的MinIO中如何使用Java API进行存储桶的创建和文件上传的操作方法。

发表回复