【问题标题】:Amazon S3 delete subfolder and it's contents C#Amazon S3 删除子文件夹及其内容 C#
【发布时间】:2018-06-21 05:32:07
【问题描述】:

假设我在 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

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

【问题讨论】:

  • Folder2 后添加正斜杠会改变结果吗? "DeptFolder/Folder1/Folder2/"
  • 在 Folder2 之后添加正斜杠不会导致任何内容被删除。我也试过正斜杠星号

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


【解决方案1】:

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

文件夹实际上并不存在!

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

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

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

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

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

【讨论】:

  • 很有道理!感谢您的回答!
猜你喜欢
  • 2017-07-15
  • 1970-01-01
  • 2018-11-09
  • 1970-01-01
  • 2014-04-01
  • 2012-09-19
  • 1970-01-01
  • 2012-07-10
  • 1970-01-01
相关资源
最近更新 更多