2017-03-08 13 views
3

ディレクトリを新しい場所に移動する場合は、Directory.Move APIを使用しますが、UNCパスでは機能しません。これは、例外の下にスローされUNCパスでDirectory.Moveが正しく動作しない

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

[System.IO.IOException] = { "送信元および宛先パスが 同じ根を持つ必要があります。ボリュームに機能しません移動します。"}

そして、私はこのAPIがUNCパスのために働いていないと言う言葉がMSDNから見つかりませんでした。どのAPIがUNCパスに対応していますか?

+1

明示的に[両方のパスのルートを確認する](https://referencesource.microsoft.com/#mscorlib/system/io/directory.cs,bd0a671e5d8c491c)を参照できますが、例外はスローされますが、なぜそれが... –

答えて

2

異なるボリューム上にある場合は移動できません。 MOVEは、コピーせずに生きる場所を変更するファイルシステム操作です。異なるボリューム間を移動するには、コピーして古いボリュームを削除する必要があります。

これはUNCとは関係ありません。 C:\ somethingからD:\ somethingへの移動は同じ方法で、同じ理由でエラーになります。

+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")が動作します –

関連する問題