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

mgi*_*t65 1 c# amazon-s3 amazon-web-services

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

Bucket
   DeptFolder
        Folder1
           Folder2
              -file1
              -file2
              -file3
Run Code Online (Sandbox Code Playgroud)

我想删除Folder2和它下面的所有文件,所以它最终看起来像这样......

Bucket
   DeptFolder
        Folder1
Run Code Online (Sandbox Code Playgroud)

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

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

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

                }
Run Code Online (Sandbox Code Playgroud)

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

Bucket
    DeptFolder
Run Code Online (Sandbox Code Playgroud)

谁能告诉我哪里可能出错?谢谢!

Joh*_*ein 5

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

文件夹实际上并不存在!

例如,您可以创建一个名为 的对象DeptFolder/Folder1/Folder2/foo,并且该对象将在该路径中创建,即使文件夹不存在!看起来这些文件夹就在那里,但它们只是为了方便而创建的。

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

我认为这就是发生在你身上的事情...... 中没有对象Folder1,所以当Folder1/Folder2被删除时,Folder1也会消失,因为其中没有任何东西可以让它“出现”。

底线:不要将 S3 视为普通文件系统。不要担心存在哪些目录/文件夹。只需将文件存储在您想要的位置即可正常工作。空文件夹(通常)不存在。不要恐慌!

有些人确实会恐慌,因此他们创建与文件夹同名的空(零长度)文件,这会强制文件夹出现。您可以这样做,但最好接受 S3 的工作方式。