Essayez d'utiliser ceci:
public static void RobustMove(string sourceDirectory, string destDirectory)
{
//move if directories are on the same volume
if (Path.GetPathRoot(source) == Path.GetPathRoot(destination))
{
Directory.Move(source, destination);
}
else
{
CopyDirectoryRecursive(source, destination);
Directory.Delete(source, true);
}
}
Vous trouverez la fonction CopyDirectoryRecursive here:
Cela devrait fonctionner jusqu'à ce que vous utilisez spanned volume ou des liens symboliques vers un autre disque physique.
Pour être encore plus robuste, vous pouvez améliorer cette fonction pour utiliser Move jusqu'à ce que System.IO .Exception soit lancé, puis passer à la copie et à la suppression.