【发布时间】:2020-12-19 15:18:18
【问题描述】:
我有一个 java 应用程序,用于将一些工件上传到 Azure Blob 存储。现在我正在尝试将这些文件从一个容器移动到另一个容器。下面是我现在所做的示例代码。
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder().connectionString(CONNECTION_STRING).buildClient();
BlobContainerClient releaseContainer = blobServiceClient.getBlobContainerClient(RELEASE_CONTAINER);
BlobContainerClient backupContainer = blobServiceClient.getBlobContainerClient(BACKUP_CONTAINER);
for (BlobItem blobItem : releaseContainer.listBlobs()) {
BlobClient destBlobClient = backupContainer.getBlobClient(blobItem.getName());
BlobClient sourceBlobClient = releaseContainer.getBlobClient(blobItem.getName());
destBlobClient.copyFromUrl(sourceBlobClient.getBlobUrl());
sourceBlobClient.delete();
}
有没有更直接的方法来做到这一点? 另外,如果这是这样做的方法,我该如何删除旧文件? sourceBlobClient.delete() 现在不起作用。
【问题讨论】:
-
你的意思是上面的代码示例都可以执行成功,但是删除操作失败了?
-
您能告诉我您的
jdk和azure-storage-blob是什么版本吗? -
嗨弗兰克,实际上删除现在有效,这不是问题。但我仍然认为必须有一种更优雅的方式来移动或复制文件。我也在使用 java 8 和 azure-storage-blob 12.8.0
-
在尝试以这种方式复制 blob 时,
copyFromUrl方法是否适用于您?当我尝试将 blob 复制到另一个位置时,它总是失败。只有当我从外部服务器给它一个 URL 时它才起作用。 @KosalaLakshitha