Imports System.IO Friend Class FileFunctions Friend Shared Sub CopyDirectory(ByVal sourceDir As String, ByVal destinationDir As String, Optional ByVal recursive As Boolean = True) Dim dir = New DirectoryInfo(sourceDir) If Not dir.Exists Then Throw New DirectoryNotFoundException($"Source directory not found: {dir.FullName}") Dim dirs As DirectoryInfo() = dir.GetDirectories() Directory.CreateDirectory(destinationDir) For Each file As FileInfo In dir.GetFiles() Dim targetFilePath As String = Path.Combine(destinationDir, file.Name) file.CopyTo(targetFilePath, True) Next If recursive Then For Each subDir As DirectoryInfo In dirs Dim newDestinationDir As String = Path.Combine(destinationDir, subDir.Name) CopyDirectory(subDir.FullName, newDestinationDir, True) Next End If End Sub End Class