如何使用java文件系统sdk从azure存储重命名或复制文件

x33g5p2x  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(354)

如何使用java文件系统sdk从azure存储重命名或复制文件是否有任何方法可以从azurestorage.jar for java重命名或复制存储在azurestorage中的文件如果有请帮助我们。

tyg4sfes

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 以获取新的文件引用。

1szpjjfi

1szpjjfi2#

你可以用 CloudFile.startCopy(source) 重命名和复制blob文件。这是完整的代码。

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);
            }
        }
}

相关问题