sud*_*n r 1 java amazon-s3 amazon-web-services aws-sdk
我只需要删除Amazon S3中特定目录下的文件,我的文件路径如下
s3://{s3_bucket}/folder1/sub-folder2/sub-folder3/sub-folder4/sub-folder5/sub-folder6/sub-folder7/sub-folder8/sub-folder9/file.txt
Run Code Online (Sandbox Code Playgroud)
我使用以下代码从上面的目录结构中删除文件
public static void deleteFilesInDirectory(String bucketName, String prefix) {
String delimiter = "/";
if (!prefix.endsWith(delimiter)) {
prefix += delimiter;
}
ListObjectsRequest listObjectsRequest = new ListObjectsRequest()
.withBucketName(bucketName).withPrefix(prefix);
ObjectListing objects = s3client.listObjects(listObjectsRequest);
for(S3ObjectSummary summary:objects.getObjectSummaries())
{
if(!summary.getKey().endsWith("/"))
{
s3client.deleteObject(bucketName, summary.getKey());
}
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码删除了目录子文件夹3 /子文件夹4 /子文件夹5 /子文件夹6 /子文件夹7 /子文件夹8 /子文件夹9 /
但我需要上面的目录结构.
我对api的理解是否正确,有人可以帮助我
有没有其他替代方法只使用java删除特定s3目录下的文件?
S3没有目录结构.这是一个完全平坦的文件系统.名为的对象foo/bar就是:一个名为的对象foo/bar,而不是在名为bar的目录中命名的对象foo.如果你删除了foo/bar,并且从字符串开始的桶中没有其他对象foo/,它看起来就像foo删除了"目录" ,但它从来就不存在.因此,要创建一个foo/bar再次命名的对象,您不需要创建一个名为foo/first 的目录; 只需创建一个名为的对象foo/bar.
| 归档时间: |
|
| 查看次数: |
2262 次 |
| 最近记录: |