Imports System.IO Public Class Form1 Private Sub CopyDirectory(ByVal SourcePath As String, ByVal DestPath As String, Optional ByVal Overwrite As Boolean = False) Dim SourceDir As DirectoryInfo = New DirectoryInfo(SourcePath) Dim DestDir As DirectoryInfo = New DirectoryInfo(DestPath) ' the source directory must exist, otherwise throw an exception If SourceDir.Exists Then ' if destination SubDir's parent SubDir does not exist throw an exception If Not DestDir.Parent.Exists Then Throw New DirectoryNotFoundException _ ("Destination directory does not exist: " + DestDir.Parent.FullName) End If If Not DestDir.Exists Then DestDir.Create() End If 'copy all the files of the current directory Dim ChildFile As FileInfo For Each ChildFile In SourceDir.GetFiles() If Overwrite Then ChildFile.CopyTo(Path.Combine(DestDir.FullName, ChildFile.Name), True) Else ' if Overwrite = false, copy the file only if it does not exist ' this is done to avoid an IOException if a file already exists ' this way the other files can be copied anyway... If Not File.Exists(Path.Combine(DestDir.FullName, ChildFile.Name)) Then ChildFile.CopyTo(Path.Combine(DestDir.FullName, ChildFile.Name), False) End If End If Next ' copy all the sub-directories by recursively calling this same routine Dim SubDir As DirectoryInfo For Each SubDir In SourceDir.GetDirectories() CopyDirectory(SubDir.FullName, Path.Combine(DestDir.FullName, _ SubDir.Name), Overwrite) Next Else Throw New DirectoryNotFoundException("Source directory does not exist: " + SourceDir.FullName) End If End Sub
'Usage: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click CopyDirectory("C:\zipMe", My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\Folder1", False) End Sub
Copy folder using Shell32 :-