我在使用这段代码时遇到了一些问题:
public boolean isExists(String key) {
try {
this.s3Client.getObjectMetadata(this.bucketName, key);
return true;
} catch (AmazonServiceException var3) {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
它总是返回 false,即使 S3 中的“文件夹”存在(空或非空),可能会出现什么问题?
上面的代码s3Client只是一个简单的AmazonS3客户端:
AmazonS3 s3client = AmazonS3ClientBuilder
.standard()
.withCredentials(new AWSStaticCredentialsProvider(credentials))
.withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(objectStoreEndpoint, objectStoreRegion))
.build();
Run Code Online (Sandbox Code Playgroud)
检查 S3 中是否存在文件夹的正确方法是什么?
解决这个问题的方法是:
public boolean isExists(String key) {
ListObjectsV2Result result = this.s3Client.listObjectsV2(this.bucketName, key);
return result.getKeyCount() > 0;
}
Run Code Online (Sandbox Code Playgroud)
空“文件夹”(实际上)将返回键计数 1。