【发布时间】: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/的目录结构。它使该路径没有文件,但目录保持未删除。
关于如何处理这个问题的任何想法?
非常感谢
【问题讨论】:
-
您的存储帐户是 ADLS Gen2 还是常规存储帐户?从描述来看,它看起来像 ADLS Gen2,但需要确认。
-
感谢高拉夫的回复!这是 ADLS Gen2
-
对于 ADLS Gen2 存储帐户,请使用
azure-storage-file-datalakeSDK 而不是常规的 blob 存储 SDK。您可以在此处找到有关 SDK 的更多信息:docs.microsoft.com/en-us/java/api/overview/azure/…。 HTH。 -
这可以尝试java:stackoverflow.com/questions/70719419/…
标签: java azure-blob-storage azure-java-sdk