2014-01-11 5 views
-1

У меня есть проектные документы в D:/MyProjects/payroleпапка с различными подпапки, я хочу, чтобы скопировать все вложенные папки из исходной папки в папку назначения

В этих «payrole» У меня есть различные файлы и различные папки суб

Мне нужно скопировать файлы и вложенные папки в E:/MyProjects/payrole

копирование файлов и подпапки из D диска на E диск

как я могу сделать эти процессы в окне приложении используя C#? пожалуйста, дайте мне некоторое представление

+3

** Пожалуйста, дайте нам некоторое представление о том, что вы пытались ** – geedubb

+0

Вы хотите скопировать файлы или ТОЛЬКО папки? – dotTutorials

ответ

-2

Как ответил Кит в SO вопрос Best way to copy the entire contents of a directory in C#

// Declare source and target directory 
string SourceDir = @"D:/myprojects/payrole", 
     TargetDir = @"E:/myprojects/payrole"; 

// Create directories in target dir from source dir 
foreach (string dirPath in Directory.GetDirectories(SourceDir, "*", 
    SearchOption.AllDirectories)) 
    Directory.CreateDirectory(dirPath.Replace(SourceDir, TargetDir)); 

// Create files from source dir in target dir 
foreach (string newPath in Directory.GetFiles(SourceDir, "*.*", 
    SearchOption.AllDirectories)) 
    File.Copy(newPath, newPath.Replace(SourceDir, TargetDir)); 
+2

-1: Если Кит уже ответил на это, то почему вы отвечаете на него еще раз? –

+0

Сохранял мой код относительно его вопроса, только что использовавшего решение Кейта. – dotTutorials

+0

Ваш комментарий не отвечает на мой вопрос. Какой смысл отвечать на чужой ответ? –

0
private void Form1_Load(object sender, EventArgs e) 

{ 
     CopyFolder(@"C:\Text", @"D:\Sites"); 

} 

    static public void CopyFolder(string sourceFolder, string desFolder) 
    { 
     try 
     { 
      // files from sourcefolder 
      string[] files = System.IO.Directory.GetFiles(sourceFolder); 

    // subfolder from sourcefolder 
      string[] folders = Directory.GetDirectories(sourceFolder); 


      foreach (string file in files) 
      { 
       string name = Path.GetFileName(file); 
       string dest = Path.Combine(desFolder, name); 
       File.Copy(file, dest); 
      } 

      foreach (string folder in folders) 
      { 
       string name = Path.GetFileName(folder); 
       string dest = Path.Combine(desFolder, name); 

       if (!Directory.Exists(dest)) 
        Directory.CreateDirectory(dest); 

       string[] subfiles = System.IO.Directory.GetFiles(folder); 
       foreach (string subfile in subfiles) 
       { 
        string subname = Path.GetFileName(subfile); 
        string subdest = Path.Combine(dest, subname); 
        File.Copy(subfile, subdest); 
       } 
      } 
     } 
     catch (Exception e) 
     { 

      MessageBox.Show(e.Message.ToString()); 
     } 
+0

Пожалуйста, объясните ответ - не просто сбрасывайте кучу кода на нас. –

+0

ИсточникFolder (@ "c: \ Test"), имеющий количество файлов и папок. см. приведенный выше код. –

+0

Здесь я получаю файлы и папки из sourceFolder (@ "c: \ Test") и сохраняю его в экземпляре строкового массива для файлов (строковые [] файлы) и для папок (строки []). –

Смежные вопросы