【问题标题】:How to delete Blob folders using Java SDK v12如何使用 Java SDK v12 删除 Blob 文件夹
【发布时间】:2021-10-31 22:36:30
【问题描述】:

我正在尝试通过在同一容器内的两个目录之间复制和删除 blob 来模拟移动操作(因为我还没有看到任何移动方法)。

例如,在container A 内部,将.csv blob 从Folder_1 移动到Folder_2,然后从Folder 1 中删除/year/month/day 文件夹结构

container A
|_ Folder_1
|_ _ _/year/month/day/a.csv
|
|_ Folder_2

我目前拥有的代码如下所示:


String blobUrl = "Folder_1 a.csv blob url"
String blobName = "a.csv"
BlobContainerClient outputContainerClient = outputBlobServiceClient.getBlobContainerClient("Container A");
// Folder_1 client
BlobClient tempBlobClient=outputContainerClient.getBlobClient("Folder_1/year/month/day/" + blobName);
// Folder_2 client
BlobClient destBlobClient=outputContainerClient.getBlobClient("Folder_2/year/month/day/" + blobName);
// Copy from Folder_1 to Folder_2                
destBlobClient.beginCopy(blobUrl,null);
// Delete Folder_1      
tempBlobClient.delete();  

问题是tempBlobClient.delete()删除了原来的a.csv而不是Folder_1/year/month/day/的目录结构。它使该路径没有文件,但目录保持未删除。

关于如何处理这个问题的任何想法?

非常感谢

【问题讨论】:

标签: java azure-blob-storage azure-java-sdk


【解决方案1】:

试试这段代码

var connectionString = "blob-connection-string";
var containerName = "container-name";
var folderPath = "folder1/subfolder/sub-subfolder";

var blobServiceClient = new BlobServiceClient(connectionString);
var blobContainerClient = blobServiceClient.GetBlobContainerClient(containerName);
var blobItems = blobContainerClient.GetBlobsAsync(prefix: folderPath);
await foreach (BlobItem blobItem in blobItems)
{
     BlobClient blobClient = blobContainerClient.GetBlobClient(blobItem.Name);
     await blobClient.DeleteIfExistsAsync();
}

更多详情请咨询Thread

【讨论】:

    猜你喜欢
    • 2020-06-28
    • 2021-11-24
    • 2021-01-04
    • 1970-01-01
    • 2020-12-04
    • 2021-03-31
    • 2019-07-15
    • 2016-04-16
    • 1970-01-01
    相关资源
    最近更新 更多