You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Java列出S3对象?求对应Python boto3功能的实现示例

Java实现列出S3存储桶对象的方法

你可以使用AWS SDK for Java 2.x实现和你给出的Python代码相同的功能,SDK会自动读取~/.aws/credentials文件中的default配置,无需额外硬编码凭证。

步骤1:添加依赖

如果使用Maven,在pom.xml中加入以下依赖:

<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>s3</artifactId>
    <version>2.25.0</version> <!-- 可替换为最新稳定版本 -->
</dependency>
<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>regions</artifactId>
    <version>2.25.0</version>
</dependency>

步骤2:编写代码实现

import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.ListObjectsV2Request;
import software.amazon.awssdk.services.s3.model.ListObjectsV2Response;
import software.amazon.awssdk.services.s3.model.S3Object;

public class ListS3Objects {
    public static void main(String[] args) {
        String bucketName = "mybucketname";
        Region region = Region.US_EAST_1; // 替换为你的存储桶所在区域

        // 初始化S3客户端,自动读取default凭证
        try (S3Client s3Client = S3Client.builder()
                .region(region)
                .build()) {

            ListObjectsV2Request request = ListObjectsV2Request.builder()
                    .bucket(bucketName)
                    .build();

            ListObjectsV2Response response;
            do {
                response = s3Client.listObjectsV2(request);
                // 遍历所有对象并打印key
                for (S3Object object : response.contents()) {
                    System.out.println(object.key());
                }
                // 设置分页标记,处理对象超过1000个的情况
                request = request.toBuilder()
                        .continuationToken(response.nextContinuationToken())
                        .build();
            } while (response.isTruncated()); // 还有更多对象则继续获取
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

代码说明

  • 客户端初始化时,SDK会自动从~/.aws/credentials的default配置加载凭证,无需手动指定。
  • 使用ListObjectsV2接口(官方推荐替代旧版ListObjects),支持自动分页,适配存储桶内对象超过1000个的场景。
  • 需将代码中的Region替换为你的存储桶实际所在区域(比如中国区可用Region.CN_NORTH_1)。

内容的提问来源于stack exchange,提问作者creas443

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 22:45:14