亚马逊s3 获取objectlisting后遍历objectsummary如果为文件夹则继续获取文件夹里的文件否则获取文件的最后更新时间Java实现
时间: 2024-02-17 18:04:17 浏览: 148
您可以使用 Amazon S3 Java SDK 来实现此操作。以下是一个示例代码,可以实现获取指定bucket下所有object的最后更新时间:
```java
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.*;
import java.util.Date;
public class S3ObjectLastModifiedTime {
public static void main(String[] args) {
String bucketName = "your-bucket-name"; // 替换为您的Bucket名
String prefix = "your-folder-prefix"; // 替换为您的文件夹前缀
AmazonS3 s3Client = AmazonS3ClientBuilder.defaultClient();
ListObjectsV2Request listObjectsRequest = new ListObjectsV2Request()
.withBucketName(bucketName)
.withPrefix(prefix)
.withDelimiter("/");
ListObjectsV2Result result;
do {
result = s3Client.listObjectsV2(listObjectsRequest);
for (S3ObjectSummary objectSummary : result.getObjectSummaries()) {
if (objectSummary.getKey().endsWith("/")) { // 如果是文件夹,则递归获取里面的文件
listObjectsRequest.setPrefix(objectSummary.getKey());
S3ObjectListing folderObjects = s3Client.listObjects(listObjectsRequest);
for (S3ObjectSummary folderObjectSummary : folderObjects.getObjectSummaries()) {
System.out.println("File name: " + folderObjectSummary.getKey() + ", Last modified: " + folderObjectSummary.getLastModified());
}
} else { // 如果是文件,则获取最后更新时间
ObjectMetadata objectMetadata = s3Client.getObjectMetadata(bucketName, objectSummary.getKey());
System.out.println("File name: " + objectSummary.getKey() + ", Last modified: " + objectMetadata.getLastModified());
}
}
String token = result.getNextContinuationToken();
listObjectsRequest.setContinuationToken(token);
} while (result.isTruncated());
}
}
```
在此示例代码中,`listObjectsV2` 方法用于获取指定前缀的 S3 对象列表。如果对象是一个文件夹,则递归获取里面的文件;如果对象是一个文件,则使用 `getObjectMetadata` 方法获取文件的元数据信息,包括最后更新时间。
阅读全文