2016-09-19 71 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執行這些功能。我們在我們的待辦事項中確實有這些功能,但沒有實施的時間表。

相關問題