Recursive File Copier Function

Have you ever had the need for a function to copy every file in a directory… wait no longer… here is a recursive way to copy files:

Sub CopySelectedFiles(ByVal strSourceDirectory As String, ByVal strDestDirectory As String, ByVal strSearchString As String)
  Dim dirInfo As New DirectoryInfo(strSourceDirectory)
  Dim fsInfo As FileSystemInfo

  For Each fsInfo In dirInfo.GetFileSystemInfos
    Dim strDestFileName As String = Path.Combine(strDestDirectory, fsInfo.Name)

    If TypeOf fsInfo Is FileInfo And fsInfo.Name.IndexOfAny(strSearchString) > -1 Then
      File.Copy(fsInfo.FullName, strDestFileName, True) ' 'This will overwrite files that already exist
    Else
      CopySelectedFiles(fsInfo.FullName, strDestFileName, strSearchString) 'we have found a subdirectory
    End If
  Next
End Sub