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)
谁能告诉我哪里可能出错?谢谢!
Amazon S3 是一个对象存储系统,而不是文件系统。
文件夹实际上并不存在!
例如,您可以创建一个名为 的对象DeptFolder/Folder1/Folder2/foo,并且该对象将在该路径中创建,即使文件夹不存在!看起来这些文件夹就在那里,但它们只是为了方便而创建的。
如果随后删除该对象,这些文件夹也会消失,因为它们实际上并不存在。
我认为这就是发生在你身上的事情...... 中没有对象Folder1,所以当Folder1/Folder2被删除时,Folder1也会消失,因为其中没有任何东西可以让它“出现”。
底线:不要将 S3 视为普通文件系统。不要担心存在哪些目录/文件夹。只需将文件存储在您想要的位置即可正常工作。空文件夹(通常)不存在。不要恐慌!
有些人确实会恐慌,因此他们创建与文件夹同名的空(零长度)文件,这会强制文件夹出现。您可以这样做,但最好接受 S3 的工作方式。
| 归档时间: |
|
| 查看次数: |
3355 次 |
| 最近记录: |