Keith Keith - 1 month ago 14
C# Question

Copy the entire contents of a directory in C#

I want to copy the entire contents of a directory from one location to another in C#.

There doesn't appear to be a way to do this using

System.IO
classes without lots of recursion.

There is a method in VB that we can use if we add a reference to
Microsoft.VisualBasic
:

new Microsoft.VisualBasic.Devices.Computer().
FileSystem.CopyDirectory( sourceFolder, outputFolder );


This seems like a rather ugly hack. Is there a better way?

Answer

Much easier

//Now Create all of the directories
foreach (string dirPath in Directory.GetDirectories(SourcePath, "*", 
    SearchOption.AllDirectories))
    Directory.CreateDirectory(dirPath.Replace(SourcePath, DestinationPath));

//Copy all the files & Replaces any files with the same name
foreach (string newPath in Directory.GetFiles(SourcePath, "*.*", 
    SearchOption.AllDirectories))
    File.Copy(newPath, newPath.Replace(SourcePath, DestinationPath), true);