Java使用minio的基本操作

这篇博客介绍了如何使用Java与MinIO进行交互,包括导入MinIO库、检查桶是否存在、创建桶、列出所有桶、获取桶中对象、下载文件、文件流操作、设置文件分享链接以及上传和删除文件等基本操作。示例代码详细展示了每个功能的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java使用minio的基本操作

导入jar包

<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>7.0.2</version>
</dependency>
public static void main(String[] args) {
        try{
        	MinioClient minioClient =  new MinioClient("http://127.0.0.1:9000", "minioadmin", "minioadmin");
            boolean flag = minioClient.bucketExists("test");
            System.out.println("是否存在此桶:"+flag);
            //创建一个新的桶
            //minioClient.makeBucket("test2");
            //System.out.println("创建成功");
            //列出所有桶
            List<Bucket> bucketList = minioClient.listBuckets();
            List<String> listA = new ArrayList<>();
            for (Bucket bucket : bucketList) {
                listA.add(bucket.name());
            }
            System.out.println("桶名称集合:"+listA);
            //删除存储桶,注意,只有存储桶为空时才能删除成功。
            //minioClient.removeBucket("test1");
            //System.out.println("删除存储桶成功");

            //列出存储桶所有对象名称
            List<String> listObjectNames = new ArrayList<>();
            if (flag) {
                Iterable<Result<Item>> myObjects = minioClient.listObjects("test");
                for (Result<Item> result : myObjects) {
                    Item item = result.get();
                    listObjectNames.add(item.objectName());
                }
            }
            System.out.println("集合大小:"+listObjectNames.size()+"存储桶对象名称集合:"+listObjectNames);

            //存储桶下载地址
            /*getObjectURL()获取桶内文件的url地址,如果设置了只写权限,用户直接访问地址是查看不了的
            getObgect()可以获取桶内对应文件的流对象,进行文件流传输
            presignedGetObject()返回的是进行加密算法的地址,通过它可以直接访问文件*/
            String url = minioClient.presignedGetObject("test","2021/08/11/65.png",3600);
            String url1 = minioClient.getObjectUrl("test","2021/08/11/65.png");
            System.out.println("下载地址:"+url);
            System.out.println("下载地址:"+url1);

            //文件流
            InputStream file = minioClient.getObject("test","2021/08/11/65.png");
            System.out.println("文件流:"+file);

            //设置有效期的分享链接(共享文件时间最大7天)
            //minioClient.getPresignedObjectUrl(Method.GET,"asiatrip","minio.png",10,null)有效期10秒,可以通过get方式访问

            //存储桶文件详情
            Iterable<Result<Item>> it = minioClient.listObjects("test");
            Iterator<Result<Item>> iter = it.iterator();
            int i = 0;
            while(iter.hasNext()) {
                i = i + 1;
                Result<Item> result = iter.next();
                Item item = result.get();
                System.out.println("存储文件详情=================文件详情:"+i);
                System.out.println("etag:" + item.etag());
                System.out.println("objectName:" + item.objectName());
                System.out.println("isDir:" + item.isDir());
                System.out.println("lastModified:" + item.lastModified());
                System.out.println("owner:" + item.owner().displayName());
                System.out.println("size:" + item.size());
                System.out.println("userMetadata:" + item.userMetadata());
                System.out.println("storageClass:" + item.storageClass());
                System.out.println("item to String:" + item.toString());
            }

            //minio上传文件 minio文件夹  fileName--uuid编码之后的文件名+路径 年/月/日/uuid.文件后缀  文件流
            //minioClient.putObject("test", "2021/08/11/66.png","C:\\Users\\Admin\\Desktop\\66.png" ,null);
            //System.out.println("上传成功");
            //minio删除文件 -如果此文件夹只有一个文件 删除该文件时会同步删除文件夹
            //minioClient.removeObject("test", "2021/8/11/66.png");
            //System.out.println("删除成功");


        }catch (Exception e){
            e.getMessage();
        }

    }

minio-7.0.2下载

### 使用 MinIO Java SDK 进行对象存储操作 为了在Java应用程序中集成MinIO客户端SDK并执行基本的对象存储操作,开发者需遵循一系列配置和编程实践。首先,在Maven项目中的`pom.xml`文件里加入特定的依赖项以引入MinIO库[^4]。 ```xml <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>8.2.2</version> </dependency> ``` 完成上述设置之后,便可以编写代码来连接到MinIO服务器,并实现诸如创建存储桶、上传文件以及下载文件等功能。下面是一些具体的例子: #### 创建存储桶 通过调用`makeBucket()`方法可轻松建立新的存储空间。此过程涉及指定唯一的名称作为参数传递给该函数。 ```java import io.minio.MinioClient; import java.util.concurrent.TimeUnit; public class CreateBucketExample { public static void main(String[] args) throws Exception { try (MinioClient minioClient = MinioClient.builder() .endpoint("http://localhost:9000", "accessKey", "secretKey") .build()) { boolean found = minioClient.bucketExists(b -> b.bucket("my-bucketname")); if (!found) { // 如果不存在则创建bucket minioClient.makeBucket(m -> m.bucket("my-bucketname")); } } } } ``` #### 文件上传 要向已有的存储桶内放置数据,则可通过`putObject()`命令完成这项工作。这里不仅限于本地磁盘上的文件路径,还可以处理字节数组等形式的数据源。 ```java import org.apache.commons.compress.utils.IOUtils; // ...其他导入语句... public class UploadFileExample { public static void main(String[] args) throws Exception { try (MinioClient minioClient = MinioClient.builder() .endpoint("http://localhost:9000", "accessKey", "secretKey") .build()) { String bucketName = "my-bucketname"; String objectName = "examplefile.txt"; // 对象名即远程位置下的目标文件名 String filePath = "/path/to/file.txt"; minioClient.uploadObject( up -> up.bucket(bucketName).object(objectName).filename(filePath)); } } } ``` #### 下载文件 当需要获取先前存入的内容时,可以通过`getObject()`方法读取所需资源,并将其保存至本地系统或其他目的地。 ```java public class DownloadFileExample { public static void main(String[] args) throws Exception { try (MinioClient minioClient = MinioClient.builder() .endpoint("http://localhost:9000", "accessKey", "secretKey") .build()) { String bucketName = "my-bucketname"; String objectName = "examplefile.txt"; String destinationFilePath = "/destination/path/examplefile.txt"; minioClient.downloadObject( down -> down.bucket(bucketName) .object(objectName) .filename(destinationFilePath)); } } } ``` 以上示例展示了如何利用MinIO Java SDK简化与S3兼容的服务交互流程,无论是管理存储桶还是操纵其中的对象都变得异常简便[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值