如何使用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
相关产品推荐
相关产品推荐

