ListObjectsRequest request = new ListObjectsRequest().withBucketName(bucketName);
ObjectListing listing = null;
while((listing == null) || (request.getMarker() != null)) {
listing = s3Client.listObjects(request);
// do stuff with listing
request.setMarker(listing.getNextMarker()); //ALSO STORE MARKER FOR FUTURE USE
}
我这样做是为了使用文件夹中的所有文件。现在经过一段时间后,我想使用存储的标记只获取该文件夹中写入的新文件。那会有用吗?
答案 0 :(得分:1)
由于以下几个原因,这对你没有帮助:
从SDK实际调用的服务的API参考:
NextMarker
当响应被截断时(即,响应中的
IsTruncated
元素值为true),您可以使用此字段中的键名作为后续请求中的标记来获取下一组对象。 Amazon S3按字典顺序列出UTF-8字符编码的对象。https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html
答案 1 :(得分:0)
我可以找到一种解决方法,该解决方法仅在我们可以控制存储在存储桶中的对象键的命名时适用。
...您可以将响应中的最后一个Key的值用作后续请求中的标记,以获取下一组对象键。
https://docs.aws.amazon.com/cli/latest/reference/s3api/list-objects.html
尽管这是AWS cli的文档,但我已经通过Java SDK验证了相同的行为。