Azure Storage Blob文件重命名

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

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

Azure Storage Blob文件重命名

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

Azure Storage Blob文件重命名

Azure Storage Blob文件重命名

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

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

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

         /// <summary>
/// 文件重命名
/// <para>Azure不支持直接重命名,需要将文件复制为新文件,再删除旧文件</para>
/// </summary>
/// <param name="fileOldName">旧文件名(需包含拓展名)e.g. old.jpg </param>
/// <param name="fileNewName">新文件名(需包含拓展名)e.g. new.jpg</param>
/// <returns></returns>
public bool RenameFile(string fileOldName, string fileNewName)
{
var blobOld = this.Container.GetBlockBlobReference(fileOldName);
var blobNew = this.Container.GetBlockBlobReference(fileNewName);
if (!blobOld.Exists())
{
//文件不存在
return false;
}
blobNew.StartCopyFromBlob(blobOld);
blobOld.DeleteIfExists();
return true;
}
上一篇:Shell第二篇:正则表达式和文本处理工具


下一篇:Azure Storage Blob 属性设置