java - 所有文件夹名称都没有出现在 Amazon S3 的列表对象调用中
问题描述
在此处输入图像描述我正在使用以下代码列出 S3 存储桶中存在的所有对象。但问题不在于调用中的所有文件夹名称。我附上了图片以供参考。
AmazonS3 s3Object = AmazonS3Utils.getS3Object(amazonS3ConnectionValues.regionName, amazonS3ConnectionValues.accessKey, amazonS3ConnectionValues.secretKey);
s3Object.listBuckets();
ListObjectsV2Result objectsList = s3Object.listObjectsV2(bucket);
List<S3ObjectSummary> objectSummaries = objectsList.getObjectSummaries();
for (S3ObjectSummary objectSummary : objectSummaries) {
Object[] newRow;
newRow = RowDataUtil.allocateRowData(data.outputRowMeta.size());
int index = 0;
newRow[index++] = objectSummary.getKey();
newRow[index++] = objectSummary.getETag();
newRow[index++] = objectSummary.getSize();
newRow[index++] = objectSummary.getLastModified();
newRow[index++] = objectSummary.getStorageClass();
putRow(data.outputRowMeta, newRow);
如图所示,响应中未显示文件夹名称“automationedge123/ ” ,输出中显示了其他文件夹名称,例如“Test Folder/”、“automationedge/”。我不理解这种行为。
解决方案
listObjects 结果可能是分页的。isTruncated()
通过查看( link )的返回值,确保您没有查看截断的结果。
listObjects(...)]
这是(链接)的javadoc的引用
因为桶可以包含几乎无限数量的键,所以列表查询的完整结果可能非常大。为了管理大型结果集,Amazon S3 使用分页将它们拆分为多个响应。始终检查 ObjectListing.isTruncated() 方法以查看返回的列表是否完整,或者是否需要额外调用才能获得更多结果。或者,使用 AmazonS3Client.listNextBatchOfObjects(ObjectListing) 方法作为获取下一页对象列表的简单方法。
推荐阅读
- angular - 角度对象映射返回与数字相反的字符串
- java - 需要了解 buildSrc Gradle 项目中的这段 Kotlin 代码
- vue.js - vue .net 核心应用中的 Vuex
- refresh - 在 Dynamics 365 CRM 统一接口中重新加载/刷新子网格时重新加载表单的问题
- azure - 在 Azure 解决方案中更改资源组
- c# - 在 C# 中调用 arcgis rest 服务时出现 500 内部服务器错误
- java - 使用 Java 将当前日期与 MySQL DB 中的日期进行比较
- reactjs - ComponentDidMount 导致我的服务器崩溃
- sql - 如何将 Sysdate 转换为 GMT?
- javascript - 在适当的主菜单项下动态渲染 Nav 的子菜单