Monday, October 13, 2008

Recursively copy a folder in C#

Perhaps I need to RTFM but I couldn't find any methods in the .NET Framework to copy a folder and its contents to another location. So this is my attempt. I haven't thoroughly tested it but it should be a reasonable starting point and worked for my single test case.

    private void CopyFolder(string sourceFolder, string outputFolder)

      string[] files = Directory.GetFiles(sourceFolder);
      foreach (string file in files)
        File.Copy(file, Path.Combine(outputFolder, Path.GetFileName(file)), true);

      string[] folders = Directory.GetDirectories(sourceFolder);
      foreach (string folder in folders)
        string[] splitFolders = folder.Split('\\');
        string folderName = splitFolders[splitFolders.Length - 1];
        CopyFolder(folder, Path.Combine(outputFolder, folderName)); 

No comments: