Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查是否有一个";文件夹";存在于S3中_Java_Amazon S3 - Fatal编程技术网

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。

如何用前缀列出并检查是否有项目?