【问题标题】:How to move (or copy) blobs between containers in Azure Blob Storage using java如何使用 java 在 Azure Blob 存储中的容器之间移动(或复制)blob
【发布时间】: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() 现在不起作用。

【问题讨论】:

  • 你的意思是上面的代码示例都可以执行成功,但是删除操作失败了?
  • 您能告诉我您的jdkazure-storage-blob 是什么版本吗?
  • 嗨弗兰克,实际上删除现在有效,这不是问题。但我仍然认为必须有一种更优雅的方式来移动或复制文件。我也在使用 java 8 和 azure-storage-blob 12.8.0
  • 在尝试以这种方式复制 blob 时,copyFromUrl 方法是否适用于您?当我尝试将 blob 复制到另一个位置时,它总是失败。只有当我从外部服务器给它一个 URL 时它才起作用。 @KosalaLakshitha

标签: java azure-blob-storage


【解决方案1】:

SO也有类似的讨论,能否参考一下建议,让我知道状态 附加信息:您是否检查过Azcopy 工具,这是移动/复制数据的最佳工具之一

我看到您在Q&A Forum 中发布了类似的查询

【讨论】:

    【解决方案2】:

    您可以使用rename 方法从中移动文件。 azure-storage-file-datalakejava客户端。

    DataLakeServiceClient storageClient = new DataLakeServiceClientBuilder().endpoint(endpoint).credential(credential).buildClient();
    DataLakeFileSystemClient dataLakeFileSystemClient = storageClient.getFileSystemClient("storage");
    DataLakeFileClient fileClient = dataLakeFileSystemClient.getFileClient("src/path");
    fileClient.rename("storage", "dest/path");
    

    方法文档here

    请注意,azure-storage-file-datalake java 客户端为您提供了将存储帐户作为文件系统处理的绝佳选择。但请注意,那里无法复制文件。

    【讨论】:

      猜你喜欢
      • 2016-09-21
      • 2021-01-04
      • 2021-10-08
      • 2021-12-04
      • 2023-01-31
      • 1970-01-01
      • 2020-03-29
      • 2022-10-20
      • 2019-05-15
      相关资源
      最近更新 更多