How to: Copy Directories

How to: Copy Directories

This example demonstrates how to use I/O classes to copy a directory from one location to another. In this example, the user can specify whether to also copy the subdirectories. If the subdirectories are copied, the method in this example recursively copies them by calling itself on each subsequent subdirectory until there are no more to copy.

Imports System
Imports System.IO

Class DirectoryCopyExample

    Shared Sub Main()
        DirectoryCopy(".", ".\\temp", True)
    End Sub 'Main

    Private Shared Sub DirectoryCopy( _
        ByVal sourceDirName As String, _
        ByVal destDirName As String, _
        ByVal copySubDirs As Boolean)

        Dim dir As DirectoryInfo = New DirectoryInfo(sourceDirName)
        Dim dirs As DirectoryInfo() = dir.GetDirectories()

        ' If the source directory does not exist, throw an exception.
        If Not dir.Exists Then
            Throw New DirectoryNotFoundException( _
                "Source directory does not exist or could not be found: " _
                + sourceDirName)
        End If

        ' If the destination directory does not exist, create it.
        If Not Directory.Exists(destDirName) Then
        End If

        ' Get the file contents of the directory to copy.
        Dim files As FileInfo() = dir.GetFiles()

        For Each file In files

            ' Create the path to the new copy of the file.
            Dim temppath As String = Path.Combine(destDirName, file.Name)

            ' Copy the file.
            file.CopyTo(temppath, False)
        Next file

        ' If copySubDirs is true, copy the subdirectories.
        If copySubDirs Then

            For Each subdir In dirs

                ' Create the subdirectory.
                Dim temppath As String = _
                    Path.Combine(destDirName, subdir.Name)

                ' Copy the subdirectories.
                DirectoryCopy(subdir.FullName, temppath, copySubDirs)
            Next subdir
        End If
    End Sub
End Class

Community Additions

© 2016 Microsoft