minio文件列表查询问题

java怎么查询minio桶中文件夹中下的文件列表
Iterable<Result> results = minioClient.listObjects(ListObjectsArgs.builder().bucket(minioConfig.getBucketName()).build());

可以通过设置 prefix 和 recursive 参数来实现。其中,prefix 参数表示要查询的文件夹路径,recursive 参数表示是否递归查询子文件夹中的文件列表。

code如下:

import io.minio.ListObjectsArgs;
import io.minio.MinioClient;
import io.minio.Result;
import io.minio.messages.Item;

import java.util.Iterator;

public class MinioExample {
    public static void main(String[] args) throws Exception {
        // 初始化 Minio 客户端
        MinioClient minioClient = MinioClient.builder()
                .endpoint("http://localhost:9000")
                .credentials("ACCESS_KEY", "SECRET_KEY")
                .build();

        // 查询文件夹中的文件列表
        Iterable<Result<Item>> results = minioClient.listObjects(
                ListObjectsArgs.builder()
                        .bucket("my-bucket")
                        .prefix("path/to/folder/")
                        .recursive(true)
                        .build());

        // 遍历文件列表
        Iterator<Result<Item>> iterator = results.iterator();
        while (iterator.hasNext()) {
            Item item = iterator.next().get();
            System.out.println(item.objectName());
        }
    }
}

  • 建议你看下这篇博客👉 :java操作minio删除文件夹及其文件方法
  • 除此之外, 这篇博客: Java实现minio文件对象存储功能中的 Minio 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • MinIO 是一款高性能、分布式的对象存储系统. 它是一款软件产品, 可以100%的运行在标准硬件。即X86等低成本机器也能够很好的运行MinIO。

    MinIO与传统的存储和其他的对象存储不同的是:它一开始就针对性能要求更高的私有云标准进行软件架构设计。因为MinIO一开始就只为对象存储而设计。所以他采用了更易用的方式进行设计,它能实现对象存储所需要的全部功能,在性能上也更加强劲,它不会为了更多的业务功能而妥协,失去MinIO的易用性、高效性。 这样的结果所带来的好处是:它能够更简单的实现局有弹性伸缩能力的原生对象存储服务。

    MinIO在传统对象存储用例(例如辅助存储,灾难恢复和归档)方面表现出色。同时,它在机器学习、大数据、私有云、混合云等方面的存储技术上也独树一帜。当然,也不排除数据分析、高性能应用负载、原生云的支持。

    在中国:阿里巴巴、腾讯、百度、中国联通、华为、中国移动等等9000多家企业也都在使用MinIO产品

    http://www.minio.org.cn/overview.shtml#

    嗯,看起来很牛逼,那我们部署一下,我这边就先用windows简单搞一下吧,这是官网链接,支持Docker,Kubernetes,Windows,Mac,选择自己合适的版本下载。

    http://www.minio.org.cn/index.shtml

  • 以下回答由chatgpt基于相关博客总结生成:

    要使用Java查询Minio桶中文件夹下的文件列表,可以使用MinIO Java SDK提供的列表对象的方法listObjects(),该方法可以返回指定桶中指定前缀的所有对象或文件列表。具体实现步骤如下:

    1. 引入MinIO Java SDK依赖,可以在maven中添加以下依赖:

    io.minio minio 8.0.3

    1. 创建MinIO客户端对象,连接到MinIO服务,以便执行操作:

    MinioClient minioClient = MinioClient.builder() .endpoint("https://play.min.io") .credentials("Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG") .build();

    其中,endpoint为MinIO服务的地址,credentials为访问密钥,需要替换为自己的。

    1. 调用listObjects()方法获取文件列表,代码如下:

    Iterable> objectList = minioClient.listObjects(ListObjectsArgs.builder() .bucket("mybucket") .prefix("myfolder/") .recursive(true) // 递归查询 .build());

    其中,bucket指定要查询的桶,prefix指定要查询的文件夹前缀,recursive指定是否递归查询。

    1. 遍历并输出查询结果,代码如下:

    for (Result result : objectList) { Item item = result.get(); System.out.println(item.objectName()); }

    完整代码示例:

    import io.minio.ListObjectsArgs; import io.minio.MinioClient; import io.minio.Result; import io.minio.messages.Item;

    public class MinioFileListDemo {

    public static void main(String[] args) {
        try {
            MinioClient minioClient = MinioClient.builder()
                    .endpoint("https://play.min.io")
                    .credentials("Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG")
                    .build();
    
            Iterable<Result<Item>> objectList = minioClient.listObjects(ListObjectsArgs.builder()
                    .bucket("mybucket")
                    .prefix("myfolder/")
                    .recursive(true)
                    .build());
    
            System.out.println("File list in bucket 'mybucket', folder 'myfolder':");
            for (Result<Item> result : objectList) {
                Item item = result.get();
                System.out.println(item.objectName());
            }
        } catch (Exception e) {
            System.out.println("Error occurred: " + e.getMessage());
        }
    }
    

    }

    同时需要注意,要查询的文件夹下如果有大量文件时,该方法可能会返回分多个请求的多个分页结果,需要使用返回的ContinuationToken进行分页处理。这部分代码可以参考MinIO Java SDK官方文档的说明。

重点就是文件夹路径用 prefix 即可.里面加入你的minio中的文件夹路径