loc*_*boy 18 java amazon-web-services
我想知道如何做到这一点.我查看了sdk文档并提供了一些示例,但我很困惑语法通常如何.
如果我想删除文件,我假设我使用deleteObject(path, key).但是,什么是"关键"?
另外你如何删除目录?我似乎找不到这样做的方法.
Dan*_*ger 37
这段代码对我有用.folderPath就像"topDir/secondDir /"
void deleteObjectsInFolder(String bucketName, String folderPath) {
for (S3ObjectSummary file : s3.listObjects(bucketName, folderPath).getObjectSummaries()){
s3.deleteObject(bucketName, file.getKey());
}
}
Run Code Online (Sandbox Code Playgroud)
Rei*_*ica 14
S3中的"键"类似于文件路径:
http://bucket.s3.amazonaws.com/some/path/to/use
Run Code Online (Sandbox Code Playgroud)
...在一个名为bucketand a key的桶中some/path/to/use.
它实际上并不是一条路径,因为没有文件夹.S3键只是一个大目录(整个存储桶)中文件的文件名.S3键可以包含/,但它没有特殊含义.
换句话说,拥有一个名为的对象delimiter并不告诉你关于该对象的任何信息some/object(它可能存在也可能不存在 - 这两个对象不相关).
但是,您可以请求具有特定前缀的密钥,因此我可以说"给我所有密钥开头,some它将返回some/path/to/.它看起来像"列出一个目录",但它实际上只是要求以特定字符串开头的文件字符.
我可以很容易地命名这样的事情:
somepathtousea
somepathtouseb
Run Code Online (Sandbox Code Playgroud)
并说"给我一切开始some/path/to/use"(它会说somepathtouse和somepathtousea).
注意:S3 URL 有多种形式:
Run Code Online (Sandbox Code Playgroud)http://s3.amazonaws.com/bucket/key http://bucket.s3.amazonaws.com/key http://bucket/key (where bucket is a DNS CNAME record pointing to bucket.s3.amazonaws.com)
编辑:
我查看了JavaDocs,这是我看到的函数签名(for somepathtouseb):
public void deleteObject(java.lang.String bucketName,
java.lang.String key)
throws AmazonClientException,
AmazonServiceException
Run Code Online (Sandbox Code Playgroud)
/*这是对我有用的解决方案。这里 Bucket_Name 是我在 S3 上的桶名,key 是 Bucket_Name 下的路径。所以,如果 S3 上的绝对路径是:
s3://my_bucket/Path/to/my/folder
那么,下面的代码应该可以工作。*/
String Bucket_Name = "my_bucket";
String key = "Path/to/my/folder";
ObjectListing objects = s3Client.listObjects(BUCKET_NAME, key);
for (S3ObjectSummary objectSummary : objects.getObjectSummaries())
{
s3Client.deleteObject(BUCKET_NAME, objectSummary.getKey());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32169 次 |
| 最近记录: |