Java 按AmazonS3客户端列出第一个深度目录
我将一些文件夹上载到我的s3存储桶中,例如: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客户端列出这些目录,
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年没有出现问题了。