2017-03-08 56 views
3

我想將目錄移動到新位置,然後使用Directory.Move API,但它不適用於UNC路徑,例如,Directory.Move對於UNC路徑無法正常工作

Directory.Move(@"\\Server1\Path1", @"\\Server1\Path2");

將拋出異常下面

[System.IO.IOException] = { 「源和目的地的路徑必須具有相同 根。將不會跨越卷。」}

而我沒有發現任何措辭告訴此API不適用於從MSDN UNC路徑。那麼哪個API適用於UNC路徑?

+1

你可以看到它明確的位置[檢查兩個路徑的根目錄](https://referencesource.microsoft.com/#mscorlib/system/io/directory.cs,bd0a671e5d8c491c)並拋出一個異常,但沒有註釋爲爲什麼這是... –

回答

2

如果它們位於不同的捲上,則無法移動。 MOVE是一種文件系統操作,它可以在不復制的情況下改變它的存在位置。要移動不同的卷,您必須複製它,然後刪除舊的。

它與UNC無關。從C:\東西移到D:\東西會以同樣的方式出於同樣的原因。

+0

「\\ Server1 \ Path1」和「\\ Server1 \ Path2」應該在相同的卷,但不同的目錄,對不對? –

+1

@CarlosLiu Path1&Path2是Server1上的共享名稱。 「\\ Server \ Share \ Path1」到「\\ Server \ Share \ Path2」是不同的文件夾在同一共享。 –

+0

@BlackFrog謝謝你的解釋。 Directory.Move(@「\\ Server \ Share \ Path1」,@「\\ Server \ Share \ Path2」)將工作 –