Reputation: 7795
I got a question in Visual Basic 2010: How can I copy all subfolders (only the subfolders, not the main folder) into another folder?
Upvotes: 4
Views: 18991
Reputation: 1
1 Line:
My.Computer.FileSystem.CopyDirectory(txtSourceDirectory.Text, txtDestinationDirectory.Text, True)
Upvotes: 0
Reputation: 9387
You need to recursively iterate through all the files and folders and copy them. This method should do the job for you:
Public Sub CopyDirectory(ByVal sourcePath As String, ByVal destinationPath As String)
Dim sourceDirectoryInfo As New System.IO.DirectoryInfo(sourcePath)
' If the destination folder don't exist then create it
If Not System.IO.Directory.Exists(destinationPath) Then
System.IO.Directory.CreateDirectory(destinationPath)
End If
Dim fileSystemInfo As System.IO.FileSystemInfo
For Each fileSystemInfo In sourceDirectoryInfo.GetFileSystemInfos
Dim destinationFileName As String =
System.IO.Path.Combine(destinationPath, fileSystemInfo.Name)
' Now check whether its a file or a folder and take action accordingly
If TypeOf fileSystemInfo Is System.IO.FileInfo Then
System.IO.File.Copy(fileSystemInfo.FullName, destinationFileName, True)
Else
' Recursively call the mothod to copy all the neste folders
CopyDirectory(fileSystemInfo.FullName, destinationFileName)
End If
Next
End Sub
Upvotes: 15
Reputation: 1973
This seems to be the simplest solution:
For Each oDir In (New DirectoryInfo("C:\Source Folder")).GetDirectories()
My.Computer.FileSystem.CopyDirectory(oDir.FullName, "D:\Destination Folder", overwrite:=True)
Next oDir
Upvotes: 1
Reputation: 10190
System.IO has two classes that you can use in a recursive fashion to do this all from code.
DirectoryInfo has two methods that are relevant:
FileInfo has a CopyTo method
Given those objects and methods and a bit of creative recursion you should be able to copy the stuff fairly easily.
Upvotes: 2