quinta-feira, 5 de junho de 2014

Copiando um diretório recursivamente

Fala galera,

Quem já precisou criar uma cópia de um diretório já deve ter notado que a função Copy que existe na classe System.IO.File não está presente na classe System.IO.Directory.

Segue então um código para quem precisa fazer cópia de um diretório e toda sua estrutura (arquivos e subdiretórios):

public void copyFolder(string oldFolder, string newFolder)
{
    if (!Directory.Exists(newFolder))
        Directory.CreateDirectory(newFolder);

    string[] files = Directory.GetFiles(oldFolder);
    foreach (string file in files)
   {
       string name = Path.GetFileName(file);
       string dest = Path.Combine(newFolder, name);
       File.Copy(file, dest);
   }
   string[] folders = Directory.GetDirectories(oldFolder);
   foreach (string folder in folders)
  {
     string name = Path.GetFileName(folder);
     string dest = Path.Combine(newFolder, name);
     copyFolder(folder, dest);
  }
}


Um abraço e até a próxima!!