如何使用 Java 检查给定 S3 存储桶中是否存在指定的密钥

我想使用Java检查给定存储桶中是否存在密钥。我查看了API,但没有任何有用的方法。我试图使用,但它抛出了一个异常。getObject


答案 1

现在,在官方 Java API 中有一个 doObjectExist 方法。

享受!


答案 2

更新:

似乎有一个新的API来检查这一点。请参阅此页面中的另一个答案:https://stackoverflow.com/a/36653034/435605

原文:

errorCode.equals("NoSuchKey")

try {
    AmazonS3 s3 = new AmazonS3Client(new ClasspathPropertiesFileCredentialsProvider());
    String bucketName = getBucketName();
    s3.createBucket(bucketName);
    S3Object object = s3.getObject(bucketName, getKey());
} catch (AmazonServiceException e) {
    String errorCode = e.getErrorCode();
    if (!errorCode.equals("NoSuchKey")) {
        throw e;
    }
    Logger.getLogger(getClass()).debug("No such key!!!", e);
}

关于异常的注意事项:我知道异常不应该用于流控制。问题是亚马逊没有提供任何api来检查此流程 - 只是关于异常的文档。


推荐