假设我在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
有人可以告诉我我可能要去哪里哪里吗?谢谢!
答案 0 :(得分:1)
Amazon S3是对象存储系统,而不是文件系统。
文件夹实际上不存在!
例如,您可以创建一个名为DeptFolder/Folder1/Folder2/foo
的对象,即使该文件夹不存在,该对象也会在该路径中创建 !会显示文件夹在其中,但只是为了方便而创建。
如果该对象随后被删除,文件夹也将消失,因为它们实际上不存在。
我认为这就是您正在发生的事情……Folder1
中没有任何对象,因此,当删除Folder1/Folder2
时,Folder1
也将消失,因为其中没有任何内容。使其“出现”。
底线:不要将S3视为普通文件系统。不要担心存在什么目录/文件夹。只需将文件存储在所需的位置,它将可以正常工作。空文件夹(通常)不存在。不要惊慌!
有些人会感到恐慌,因此他们创建了与文件夹相同名称的空文件(零长度),这迫使该文件夹出现。您可以这样做,但是最好只是接受S3的工作方式。