Java Azure存储客户端-删除Blob
如前所述,我正在尝试使用Java删除Azure存储容器中的一些blob。看起来这应该是一件容易的事情,所以我假设我做错了什么,因为下面的代码没有删除任何内容。容器中有4个水滴Java Azure存储客户端-删除Blob,java,azure,azure-storage-blobs,Java,Azure,Azure Storage Blobs,如前所述,我正在尝试使用Java删除Azure存储容器中的一些blob。看起来这应该是一件容易的事情,所以我假设我做错了什么,因为下面的代码没有删除任何内容。容器中有4个水滴 String connectionString = String.format( "DefaultEndpointsProtocol=https;" + "AccountName=%s;" + "AccountKey=%s", accountName, accountKey)
String connectionString = String.format(
"DefaultEndpointsProtocol=https;" +
"AccountName=%s;" +
"AccountKey=%s", accountName, accountKey);
CloudStorageAccount account =
CloudStorageAccount.parse(connectionString);
CloudBlobClient client = account.createCloudBlobClient();
CloudBlobContainer container =
client.getContainerReference("myContainer");
// This loop iterates 4 times, as expected
for (ListBlobItem item : container.listBlobs("prefix/", true)) {
CloudBlockBlob blob = container.
getBlockBlobReference(item.getUri().toString());
if (blob.deleteIfExists()) {
// never hits
}
}
没有抛出异常,但blob仍然存在。当我调用
delete()
而不是deleteIfExists()
时,我得到一个StorageException:“指定的blob不存在。”如果您查看getBlockBlobReference的API文档,您将看到它采用blob的名称(因此是一个字符串,而不是URI)。因此,您在这里所做的是尝试删除名为blob的完整URI的blob。这些当然不存在
您只需检查项目的类型并将其转换为blob。然后你可以做任何你想做的事情
if (item instanceof CloudBlob) {
blob = (CloudBlob) item;
}