Question: Apparently I can't move files on different volumes using Directory.Move.

I have read that I have to copy each file individually to the destination, then delete the source directory.

Do I have any other option?

Answer: 
An easier option would be, to add a reference to the `Microsoft.VisualBasic` namespace and use the `MoveDirectory` method, which can move across volumes.

```
Microsoft.VisualBasic.FileIO.FileSystem.MoveDirectory(sourceDirName, destDirName);

```
Try to use this:

```
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);
    }
}

```

You will find CopyDirectoryRecursive function [here](https://stackoverflow.com/questions/58744/copy-the-entire-contents-of-a-directory-in-c-sharp):

This should be working until you use [spanned volume](http://lifehacker.com/5986883/how-to-combine-multiple-hard-drives-into-one-volume-for-cheap-high-capacity-storage) or symbol links to another physical disk.

To be even more robust you can improve this function to use Move until System.IO .Exception is thrown and then to switch to copying and deleting.