如何使用 java azure-storage-file-datalake 复制 Azure 存储 files/directories
How to copy Azure storage files/directories using java azure-storage-file-datalake
我使用 azure-storage-file-datalake 为 java 在我的 Azure 存储帐户上进行文件系统操作,我可以打开文件,删除,甚至 rename/move 个文件或目录。
我找不到任何方法将 files/folder 复制到其他位置。
我就是这样 rename/move files/directories:
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");
有没有其他方法可以使用 azure-storage-file-datalake
SDK 甚至 azure-storage-blob
SDK 来复制文件或目录?
azure-storage-file-datalake:
azure-storage-blob
这个好像没有实现的方法
我找到了一种使用 com.azure.storage.blob.BlobClient
.
在同一个存储帐户中复制 blob(文件)的方法
使用beginCopy
方法如下:
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder().endpoint(spnEndpoint).credential(credential).buildClient();
BlobContainerClient blobContainerClient = blobServiceClient.getBlobContainerClient("containerName");
BlobClient dst = blobContainerClient.getBlobClient("destination/blob");
BlobClient src = blobContainerClient.getBlobClient("src/blob");
dst.beginCopy(src.getBlobUrl(), null);
您可以使用azure-sdk-for-java复制文件
String CONNECT_STRING = "DefaultEndpointsProtocol=https;AccountName=<account-name>;AccountKey=<account key>;EndpointSuffix=core.windows.net";
String SHARE_NAME = "share-name";
ShareFileClient client = new ShareFileClientBuilder()
.connectionString(CONNECT_STRING)
.shareName(SHARE_NAME)
.resourcePath("path/to/target/file.txt")
.buildFileClient();
String srcFile = "https://<account-name>.file.core.windows.net/share-name/path/to/source/file.txt";
SyncPoller<ShareFileCopyInfo, Void> poller = client.beginCopy(srcFile, null, Duration.ofSeconds(2));
final PollResponse<ShareFileCopyInfo> pollResponse = poller.poll();
final ShareFileCopyInfo value = pollResponse.getValue();
System.out.printf("Copy source: %s. Status: %s.%n", value.getCopySourceUrl(), value.getCopyStatus());
以上示例使用连接字符串创建文件客户端,您也可以使用SAS令牌创建文件客户端,详情请参阅java文档ShareFileClientBuilder。两个连接字符串 and/or SAS 令牌都可以在 Azure 门户中的存储帐户页面上找到。
我使用 azure-storage-file-datalake 为 java 在我的 Azure 存储帐户上进行文件系统操作,我可以打开文件,删除,甚至 rename/move 个文件或目录。
我找不到任何方法将 files/folder 复制到其他位置。
我就是这样 rename/move files/directories:
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");
有没有其他方法可以使用 azure-storage-file-datalake
SDK 甚至 azure-storage-blob
SDK 来复制文件或目录?
azure-storage-file-datalake:
azure-storage-blob
这个好像没有实现的方法
我找到了一种使用 com.azure.storage.blob.BlobClient
.
使用beginCopy
方法如下:
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder().endpoint(spnEndpoint).credential(credential).buildClient();
BlobContainerClient blobContainerClient = blobServiceClient.getBlobContainerClient("containerName");
BlobClient dst = blobContainerClient.getBlobClient("destination/blob");
BlobClient src = blobContainerClient.getBlobClient("src/blob");
dst.beginCopy(src.getBlobUrl(), null);
您可以使用azure-sdk-for-java复制文件
String CONNECT_STRING = "DefaultEndpointsProtocol=https;AccountName=<account-name>;AccountKey=<account key>;EndpointSuffix=core.windows.net";
String SHARE_NAME = "share-name";
ShareFileClient client = new ShareFileClientBuilder()
.connectionString(CONNECT_STRING)
.shareName(SHARE_NAME)
.resourcePath("path/to/target/file.txt")
.buildFileClient();
String srcFile = "https://<account-name>.file.core.windows.net/share-name/path/to/source/file.txt";
SyncPoller<ShareFileCopyInfo, Void> poller = client.beginCopy(srcFile, null, Duration.ofSeconds(2));
final PollResponse<ShareFileCopyInfo> pollResponse = poller.poll();
final ShareFileCopyInfo value = pollResponse.getValue();
System.out.printf("Copy source: %s. Status: %s.%n", value.getCopySourceUrl(), value.getCopyStatus());
以上示例使用连接字符串创建文件客户端,您也可以使用SAS令牌创建文件客户端,详情请参阅java文档ShareFileClientBuilder。两个连接字符串 and/or SAS 令牌都可以在 Azure 门户中的存储帐户页面上找到。