Amazon S3删除子文件夹及其内容C#

时间:2018-06-20 17:07:38

标签: c# amazon-web-services amazon-s3

假设我在S3存储桶中具有以下层次结构。

Bucket
   DeptFolder
        Folder1
           Folder2
              -file1
              -file2
              -file3

我想删除Folder2及其下面的任何文件,以便最终看起来像这样...

Bucket
   DeptFolder
        Folder1

我运行以下代码,删除发生在Folder1而不是Folder2。

using (var s3Client = new AmazonS3Client(myAccessKey,mySecretAccessKey, config))
                {

                        S3DirectoryInfo directoryToDelete = new S3DirectoryInfo(s3Client, myBucket, "DeptFolder/Folder1/Folder2");
                        directoryToDelete.Delete(true); 

                }

我最终得到的是这个...

Bucket
    DeptFolder

有人可以告诉我我可能要去哪里哪里吗?谢谢!

1 个答案:

答案 0 :(得分:1)

Amazon S3是对象存储系统,而不是文件系统。

文件夹实际上不存在!

例如,您可以创建一个名为DeptFolder/Folder1/Folder2/foo的对象,即使该文件夹不存在,该对象也会在该路径中创建 !会显示文件夹在其中,但只是为了方便而创建。

如果该对象随后被删除,文件夹也将消失,因为它们实际上不存在。

我认为这就是您正在发生的事情……Folder1中没有任何对象,因此,当删除Folder1/Folder2时,Folder1也将消失,因为其中没有任何内容。使其“出现”。

底线:不要将S3视为普通文件系统。不要担心存在什么目录/文件夹。只需将文件存储在所需的位置,它将可以正常工作。空文件夹(通常)不存在。不要惊慌!

有些人会感到恐慌,因此他们创建了与文件夹相同名称的空文件(零长度),这迫使该文件夹出现。您可以这样做,但是最好只是接受S3的工作方式。