2016-09-19 70 views
4

我想弄清楚如何将Azure文件存储中的文件从一个位置移动到另一个位置,位于相同的位置。如何使用Azure存储SDK将Azure文件存储上的文件从一个子文件夹移动到另一个子文件夹?

E.g.

source -> \\Share1\someFile.txt 
destination -> \\Share1\Foo\Bar\someFile.txt 
  • 我需要先复制该文件,然后删除源?
  • 如果目标子目录不存在,该怎么办?我需要为每个子目录CreateIfNotExistsAsync,首先?

喝彩!

回答

1

Azure存储文件共享是与SMB兼容的共享。所以你应该能够用普通的文件I/O操作进行文件复制/移动。这与直接blob操作相反,您需要通过Storage API专门创建容器,启动blob副本等。

+0

“_用正常的文件I/O操作_”< - 你说...使用'System.File.IO' ..我可以使用该命名空间的方法吗?我实际上使用官方的Storage SDK并使用其中的方法,不过并且想要坚持使用Storage SDK库。 –

+0

@ Pure.Krome - 是的 - 这正是我所说的。引用[本文](https://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-files/):“*您可以从命令提示符或从文件资源管理器中查看挂载的共享及其内容您还可以使用标准的Windows文件I/O API在虚拟机内运行代码,例如由System.IO命名空间提供的代码.NET Framework。*“ –

+0

甜 - 我以为你说过。所有你说的是当你试图通过一个虚拟磁盘(这是SMB)访问文件存储。这不是我想要做的。我没有坐骑。我也不想要一个。我无法使用'System.File.IO'中的任何内容,因为我没有本地安装。其次,即使我确实有这样的情况,SMB比使用REST端点要慢(ref:http://stackoverflow.com/questions/37581971/azure-file-storage-smb-slow-to-list-files-in-目录)。所以 - 我试图找出如何通过SDK做到这一点(如OP所述)。 –

-2

Azure blob子导向器是一个虚拟功能,因为它们在物理上不存在,blob /文件的名称包含完整路径。正因为如此,你不必明确“创建”目录。

我不认为一个原子“重命名”方法存在Azure的斑点/文件......要解决它,你将不得不复印件(新名称),然后删除原始。

+1

本指导原则直接适用于blob,而不适用于Azure文件存储(它在blob存储上实现SMB共享,​​并且是OP特意询问)。 –

2

不幸的是,我们没有通过客户端SDK所依赖的REST API公开的移动/重命名功能。您当然可以通过SMB执行这些功能。我们在我们的待办事项中确实有这些功能,但没有实施的时间表。

相关问题