如何判断对象是否是AWS S3上的文件夹

use*_*603 19 directory object amazon-s3 amazon-web-services

我没有出现在元数据中 - 对象是否是文件夹.你们知道有没有具体的方法?我在谷歌搜索中找不到任何有价值的东西.

小智 11

我不知道这个响应是否会在这么长时间后发挥作用,但我们走了:

要解决此问题,您必须在java中执行此操作:

        List<S3ObjectSummary> files = s3client.listObjects(bucket.getName()).getObjectSummaries();
        for (S3ObjectSummary file : files) {
            if (file.getKey().endsWith("/"))
                System.out.println("----" + file.getKey() + " (ES CARPETA)");
            else 
                System.out.println("----" + file.getKey() + " NO NO NO");
        }
Run Code Online (Sandbox Code Playgroud)

使用方法"endsWith("/")",您可以检测S3ObjectSummary是否是文件夹.

希望这可以帮助某人.

麦克风

  • 就像奇迹一样!谢谢你。另外,对于非西班牙语使用者来说,“ES CARPETA”可翻译为“这是一个文件夹”。 (2认同)

wes*_*ell 5

OP的未来3年,我提供了答案,因为它出现在最近的Google搜索中。

这些天来,“目录”的概念在S3中有了一些改进,这些对象的内容类型为“应用程序/ x目录”。

这样,如果您使用的是AWS Ruby SDK(版本1),则可以简单地使用:

s3_client.buckets['some_bucket'].objects['some_directory_object'].content_type
Run Code Online (Sandbox Code Playgroud)


use*_*525 3

对象不是文件夹。来自文档:

Amazon S3 存储桶没有典型计算机文件系统中的目录层次结构。但是,您可以使用暗示文件夹结构的对象键名称来创建逻辑层次结构。

您能做的最好的事情就是使用 GET Bucket(列出对象)来获取有关存储桶内容的一些信息:

http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html