验证 deleteObject 是否真的删除了 AWS S3 Java sdk 中的对象
Verify if the deleteObject has actually deleted the object in AWS S3 Java sdk
我有以下方法,它从 AWS S3 Bucket 中删除一个文件,但是,
- 如果文件不存在则不会抛出异常
- 没有成功代码或标志来查看文件是否已成功删除
是否有任何解决方法来处理这种情况。
@Override
public void deleteFile(String fileName) {
try {
this.client.deleteObject(builder ->
builder
.bucket(this.bucketName).key(fileName)
.build());
} catch (S3Exception ex) {
ex.printStackTrace();
}
}
如果您的请求成功,那么您的对象将被删除。请注意,由于最终一致性,对象不能保证立即消失。您需要检查 HTTP 状态代码。
AmazonS3 as3 = new AmazonS3();
Status myStatus = as3.DeleteObject(<fill in paramters here>);
if (myStatus.Code >= 200 && myStatus.Code < 300)
{
// Success
}
else
{
// Delete Failed
// Handle specific Error Codes below
if (myStatus.Description == "AllAccessDisabled")
{
// Do something
}
if (myStatus.Description == "NoSuchKey")
{
// Do something
}
}
此外,还有一个 api 可用于检查对象是否存在于 S3 中
doesObjectExist
我有以下方法,它从 AWS S3 Bucket 中删除一个文件,但是,
- 如果文件不存在则不会抛出异常
- 没有成功代码或标志来查看文件是否已成功删除
是否有任何解决方法来处理这种情况。
@Override
public void deleteFile(String fileName) {
try {
this.client.deleteObject(builder ->
builder
.bucket(this.bucketName).key(fileName)
.build());
} catch (S3Exception ex) {
ex.printStackTrace();
}
}
如果您的请求成功,那么您的对象将被删除。请注意,由于最终一致性,对象不能保证立即消失。您需要检查 HTTP 状态代码。
AmazonS3 as3 = new AmazonS3();
Status myStatus = as3.DeleteObject(<fill in paramters here>);
if (myStatus.Code >= 200 && myStatus.Code < 300)
{
// Success
}
else
{
// Delete Failed
// Handle specific Error Codes below
if (myStatus.Description == "AllAccessDisabled")
{
// Do something
}
if (myStatus.Description == "NoSuchKey")
{
// Do something
}
}
此外,还有一个 api 可用于检查对象是否存在于 S3 中 doesObjectExist