如何使用java文件系统sdk从azure存储重命名或复制文件是否有任何方法可以从azurestorage.jar for java重命名或复制存储在azurestorage中的文件如果有请帮助我们。
tyg4sfes1#
根据该类的javadocs CloudFile 对于azure文件存储,本机不支持文件存储的重命名操作,即使是blob存储。如果要执行重命名操作,则需要执行两个步骤,包括复制具有新名称的文件和删除具有旧名称的文件。下面有两个独立于so&msdn的线程。使用文件(而不是blob)存储以编程方式(.net)重命名azure文件或目录,这与使用java是一样的。https://social.msdn.microsoft.com/forums/azure/en-us/04c415fb-cc1a-4270-986b-03a68b05aa81/renaming-files-in-blobs-storage?forum=windowsazuredata.正如@steven所说,复制操作是通过函数支持的 startCopy 以获取新的文件引用。
CloudFile
startCopy
1szpjjfi2#
你可以用 CloudFile.startCopy(source) 重命名和复制blob文件。这是完整的代码。
CloudFile.startCopy(source)
package nau.edu.cn.steven; import com.microsoft.azure.storage.CloudStorageAccount; import com.microsoft.azure.storage.file.CopyStatus; import com.microsoft.azure.storage.file.CloudFile; import com.microsoft.azure.storage.file.CloudFileClient; import com.microsoft.azure.storage.file.CloudFileDirectory; import com.microsoft.azure.storage.file.CloudFileShare; public class AzureCopyFile { // Connection string public static final String storageConnectionString = "DefaultEndpointsProtocol=http;" + "AccountName=your_account_name;" + "AccountKey= your_account_key"; public static void main( String[] args ) { try { CloudStorageAccount account = CloudStorageAccount.parse(storageConnectionString); CloudFileClient fileClient = account.createCloudFileClient(); // Get a reference to the file share CloudFileShare share = fileClient.getShareReference("sampleshare"); if(share.createIfNotExists()) { System.out.println("New share created"); } // Get a reference to the root directory for the share for example CloudFileDirectory rootDir = share.getRootDirectoryReference(); // Old file CloudFile oldCloudFile = rootDir.getFileReference("Readme.txt"); // New file CloudFile newCloudFile = rootDir.getFileReference("Readme2.txt"); // Start copy newCloudFile.startCopy(oldCloudFile.getUri()); // Exit until copy finished while(true) { if(newCloudFile.getCopyState().getStatus() != CopyStatus.PENDING) { break; } // Sleep for a second maybe Thread.sleep(1000); } } catch(Exception e) { System.out.print("Exception encountered: "); System.out.println(e.getMessage()); System.exit(-1); } } }
2条答案
按热度按时间tyg4sfes1#
根据该类的javadocs
CloudFile
对于azure文件存储,本机不支持文件存储的重命名操作,即使是blob存储。如果要执行重命名操作,则需要执行两个步骤,包括复制具有新名称的文件和删除具有旧名称的文件。
下面有两个独立于so&msdn的线程。
使用文件(而不是blob)存储以编程方式(.net)重命名azure文件或目录,这与使用java是一样的。
https://social.msdn.microsoft.com/forums/azure/en-us/04c415fb-cc1a-4270-986b-03a68b05aa81/renaming-files-in-blobs-storage?forum=windowsazuredata.
正如@steven所说,复制操作是通过函数支持的
startCopy
以获取新的文件引用。1szpjjfi2#
你可以用
CloudFile.startCopy(source)
重命名和复制blob文件。这是完整的代码。