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 按AmazonS3客户端列出第一个深度目录_Java_Amazon S3 - Fatal编程技术网

Java 按AmazonS3客户端列出第一个深度目录

Java 按AmazonS3客户端列出第一个深度目录,java,amazon-s3,Java,Amazon S3,我将一些文件夹上载到我的s3存储桶中,例如: s3cmd sync myfirstdir s3://my-bucket/myfirstdir/ s3cmd sync myseconddir s3://my-bucket/myseconddir/ s3cmd sync mythirddir s3://my-bucket/mythirddir/ 这些目录(myfirstdir、mysecondir、mythrids)还包括子目录和普通文件 如何通过AmazonS3客户端列出这些目录,

我将一些文件夹上载到我的s3存储桶中,例如:

s3cmd  sync myfirstdir  s3://my-bucket/myfirstdir/
s3cmd  sync myseconddir  s3://my-bucket/myseconddir/
s3cmd  sync mythirddir  s3://my-bucket/mythirddir/

这些目录(myfirstdir、mysecondir、mythrids)还包括子目录和普通文件

如何通过AmazonS3客户端列出这些目录,而不是子目录。我想要的只是你的回归
s3cmd ls s3://my bucket/
,它只列出第一个深度文件或dir,而不是递归地列出

myfirstdir
myseconddir
mythirddir
            ObjectListing objects = conn.listObjects(bucket.getName());
            do {
                for (S3ObjectSummary objectSummary : objects.getObjectSummaries()) {

                    System.out.println(objectSummary.getKey());
                }
                objects = conn.listNextBatchOfObjects(objects);
            } while (objects.isTruncated());

我尝试了以下代码,但它递归地返回了每个文件和目录

myfirstdir
myseconddir
mythirddir
            ObjectListing objects = conn.listObjects(bucket.getName());
            do {
                for (S3ObjectSummary objectSummary : objects.getObjectSummaries()) {

                    System.out.println(objectSummary.getKey());
                }
                objects = conn.listNextBatchOfObjects(objects);
            } while (objects.isTruncated());


S3没有文件夹作为“物理对象”。有一个桶,你把文件放在里面

每个文件都有一个关联的路径

现在,如果路径名称中有斜杠(“/”),它将作为文件夹显示在UI工具中,但它的工作方式与“普通”文件系统不同

在官方文件中,你可以找到它如何工作的详细说明

ListObjectsV2Result result = conn.listObjectsV2(new ListObjectsV2Request().withBucketName(bucket.getName()).withDelimiter("/"));
for (String prefix : result.getCommonPrefixes()) {
    System.out.println(prefix);
}
我将此页面的部分代码翻译为Java,因此它只能显示bucket下的第一级目录

Python等价物:

导入boto3
s3\u client=boto3.client('s3'))
response=s3\u client.list\u objects\u v2(Bucket='my-Bucket',分隔符='/'))
对于响应中的前缀['CommonPrefixes']:
打印(前缀['prefix'])

旁注:现在,建议使用而不是
s3cmd
。看来,
s3cmd
已经有1.5年没有出现问题了。