If you want to move a directory and its contents in .Net then you can use this:
Directory.Move(sourceDir,destDir)
For some reason unbeknownst to me, there is no Directory.Copy. So, instead of re-inventing the wheel I googled for some code that's already written. I found this, and it seems to work a treat. It was posted by a chap called Mike on the vbCity forums, so all gratitude should go to him:
' Usage:
' Copy Recursive with Overwrite if exists.
' RecursiveDirectoryCopy("C:\Data", "D:\Data", True, True)
' Copy Recursive without Overwriting.
' RecursiveDirectoryCopy("C:\Data", "D:\Data", True, False)
' Copy this directory Only. Overwrite if exists.
' RecursiveDirectoryCopy("C:\Data", "D:\Data", False, True)
' Copy this directory only without overwriting.
' RecursiveDirectoryCopy("C:\Data", "D:\Data", False, False)
' Recursively copy all files and subdirectories from the specified source to the specified
' destination.
Private Sub RecursiveDirectoryCopy(ByVal sourceDir As String, ByVal destDir As String, ByVal fRecursive As Boolean, ByVal overWrite As Boolean)
Dim sDir As String
Dim dDirInfo As IO.DirectoryInfo
Dim sDirInfo As IO.DirectoryInfo
Dim sFile As String
Dim sFileInfo As IO.FileInfo
Dim dFileInfo As IO.FileInfo
' Add trailing separators to the supplied paths if they don't exist.
If Not sourceDir.EndsWith(System.IO.Path.DirectorySeparatorChar.ToString()) Then
sourceDir &= System.IO.Path.DirectorySeparatorChar
End If
If Not destDir.EndsWith(System.IO.Path.DirectorySeparatorChar.ToString()) Then
destDir &= System.IO.Path.DirectorySeparatorChar
End If
'If destination directory does not exist, create it.
dDirInfo = New System.IO.DirectoryInfo(destDir)
If dDirInfo.Exists = False Then dDirInfo.Create()
dDirInfo = Nothing
' Recursive switch to continue drilling down into directory structure.
If fRecursive Then
' Get a list of directories from the current parent.
For Each sDir In System.IO.Directory.GetDirectories(sourceDir)
sDirInfo = New System.IO.DirectoryInfo(sDir)
dDirInfo = New System.IO.DirectoryInfo(destDir & sDirInfo.Name)
' Create the directory if it does not exist.
If dDirInfo.Exists = False Then dDirInfo.Create()
' Since we are in recursive mode, copy the children also
RecursiveDirectoryCopy(sDirInfo.FullName, dDirInfo.FullName, fRecursive, overWrite)
sDirInfo = Nothing
dDirInfo = Nothing
Next
End If
' Get the files from the current parent.
For Each sFile In System.IO.Directory.GetFiles(sourceDir)
sFileInfo = New System.IO.FileInfo(sFile)
dFileInfo = New System.IO.FileInfo(Replace(sFile, sourceDir, destDir))
'If File does not exist. Copy.
If dFileInfo.Exists = False Then
sFileInfo.CopyTo(dFileInfo.FullName, overWrite)
Else
'If file exists and is the same length (size). Skip.
'If file exists and is of different Length (size) and overwrite = True. Copy
If sFileInfo.Length <> dFileInfo.Length AndAlso overWrite Then
sFileInfo.CopyTo(dFileInfo.FullName, overWrite)
'If file exists and is of different Length (size) and overwrite = False. Skip
ElseIf sFileInfo.Length <> dFileInfo.Length AndAlso Not overWrite Then
'Debug.WriteLine(sFileInfo.FullName & " Not copied.")
End If
End If
sFileInfo = Nothing
dFileInfo = Nothing
Next
End Sub