Java 检查是否有一个";文件夹";存在于S3中
我的代码有点问题:Java 检查是否有一个";文件夹";存在于S3中,java,amazon-s3,Java,Amazon S3,我的代码有点问题: 公共布尔isExists(字符串键){ 试一试{ this.s3Client.getObjectMetadata(this.bucketName,key); 返回true; }捕获(AmazonServiceException var3){ 返回false; } } 它总是返回false,即使S3中的“文件夹”存在(空或非空),有什么问题 上面代码中的s3Client只是一个简单的AmazonS3客户端: AmazonS3 s3client=AmazonS3ClientBu
公共布尔isExists(字符串键){
试一试{
this.s3Client.getObjectMetadata(this.bucketName,key);
返回true;
}捕获(AmazonServiceException var3){
返回false;
}
}
它总是返回false,即使S3中的“文件夹”存在(空或非空),有什么问题
上面代码中的s3Client
只是一个简单的AmazonS3客户端:
AmazonS3 s3client=AmazonS3ClientBuilder
.standard()
.具有凭证(新AWSStaticCredentialsProvider(凭证))
.withEndpointConfiguration(新的AwsClientBuilder.EndpointConfiguration(objectStoreEndpoint,objectStoreRegion))
.build();
检查S3中是否存在文件夹的正确方法是什么?S3没有文件夹,它只有存储桶和对象。大多数开发人员使用
/
字符在语义上组织对象名,但S3没有文件系统那样的目录结构。特别是,S3上永远不会有“空目录”这样的东西
最接近的方法是根据前缀列出。解决方法是:
公共布尔isExists(字符串键){
ListObjectsV2Result结果=this.s3Client.listObjectsV2(this.bucketName,key);
返回结果.getKeyCount()>0;
}
一个空的“文件夹”(实际上是说)将返回键计数1。如何用前缀列出并检查是否有项目?