Azure Storage Blob文件重命名

Azure Storage的SDK并没有提供文件重命名的方法,而且从StorageExplorer管理工具里操作修改文件名的时候也有明确提示:

是通过复制当前文件并命名为新文件名再删除旧文件,不保存快照信息,而且在重命名大文件的时候可能会花费较长时间。

官方的管理工具都没有直接重命名的方法,因此得知Storage的设计机制暂不支持文件直接重命名,但我们也可以从管理工具的提示语中得到解决方案,就是先复制文件到新文件名再删除旧文件,虽然这相当令人费解。。。但也是没有办法的办法,而且笔者查找的来的方法都是如此。。。

 

http://stackoverflow.com/questions/3734672/azure-storage-blob-rename

http://stackoverflow.com/questions/16121503/cant-rename-blob-file-in-azure-storage

 

目前Storage没有支持,那我们也只好这样处理了,具体代码如下:

 

 1         /// <summary>
 2         /// 文件重命名
 3         /// <para>Azure不支持直接重命名,需要将文件复制为新文件,再删除旧文件</para>
 4         /// </summary>
 5         /// <param name="fileOldName">旧文件名(需包含拓展名)e.g. old.jpg </param>
 6         /// <param name="fileNewName">新文件名(需包含拓展名)e.g. new.jpg</param>
 7         /// <returns></returns>
 8         public bool RenameFile(string fileOldName, string fileNewName)
 9         {
10             var blobOld = this.Container.GetBlockBlobReference(fileOldName);
11             var blobNew = this.Container.GetBlockBlobReference(fileNewName);
12             if (!blobOld.Exists())
13             {
14                 //文件不存在
15                 return false;
16             }
17             blobNew.StartCopyFromBlob(blobOld);
18             blobOld.DeleteIfExists();
19             return true;
20         }

 

posted @ 2017-04-19 10:11  Ken‘s  阅读(1101)  评论(2编辑  收藏  举报