Как скопировать также вложенные папки и файлы из определенной папки?

Автор:editor

Как скопировать также вложенные папки и файлы из определенной папки?

Цитата: ken76

Кто-нибудь может помочь, как я могу скопировать вложенные папки рабочего стола и файлы с кодом ниже этого текста?
Для момент я могу только скопировать файлы от » + компьютер + » и\с$\папке users\Desktop, но не вложенные папки и файлы.

Code:
string[] dirs = Directory.GetDirectories("\\" + computer + "\c$\Users\"); 
 foreach (string item in dirs) 
 { 

  FileInfo f = new FileInfo(item); 


user2 = "\\" + computer + "\c$\Users\" + f.Name + "\Desktop"; 


if (Directory.Exists(user2)) 








 { 


user = "C:\Backup" + computer + "" + f.Name + "\Desktop"; 


Directory.CreateDirectory(user); 


DirectoryInfo folder = new DirectoryInfo(user2); 


FileInfo[] files = folder.GetFiles(); 


foreach (FileInfo file in files) 


{ 




string temppath = Path.Combine(user, file.Name); 




 file.CopyTo(temppath, true); 


 } 
  }
Цитата: jmcilhinney

Есть два варианта:

1. Написать рекурсивный метод и делать по одной папке, например

private void CopyFolder (sourceFolderPath line, destinationFolderPath string) 

if (Katalog.Suschestvuet (destinationFolderPath)!) 

Katalog.CreateDirectory (destinationFolderPath); 
}

Foreach (var sourceFilePath in katalog.Zarazhen (sourceFolderPath)) 

BAP destinationFilePath = put.Kombinat (destinationFolderPath, put.GetFileName (sourceFilePath));

Fayl.Kopiya (sourceFilePath, destinationFilePath, true);
}

for each element (VAR sourceSubfolderPath in katalog.GetDirectories (sourceFolderPath))
{
// Note: put.Metod getfile justgets final node name, so it can be used to get the name of the folder.
var destinationSubfolderPath = put.Kombinat (destinationFolderPath, put.GetFileName (sourceSubfolderPath));

CopyFolder (sourceSubfolderPath, destinationSubfolderPath); 
}
}

// Примечание: путь.Метод getfile justgets имя конечного узла, поэтому его можно использовать, чтобы получить имя папки.
var destinationSubfolderPath = put.Kombinat (destinationFolderPath, put.GetFileName (sourceSubfolderPath));

CopyFolder(sourceSubfolderPath, destinationSubfolderPath);
}
}

2. Получить все пути к файлам рекурсивно сначала, а потом копировать их по одному, например

private void CopyFolder (line sourceFolderPath, destinationFolderPath string) 

var directory paths = katalog.Zarazhen (sourceFolderPath, the «*» Well, searchoption indicates nuzhno.AllDirectories);

Foreach (var sourceFilePath in directory paths)
{
var destinationFilePath = sourceFilePath.Zamenit (sourceFolderPath, destinationFolderPath);
var destinationFileFolderPath = put.GetDirectoryName (destinationFilePath);

if (Katalog.Suschestvuet (destinationFileFolderPath)!)
{
Katalog.CreateDirectory (destinationFileFolderPath);
}

Fayl.Kopiya (sourceFilePath, destinationFilePath, true);
}

Цитата: ken76

Путь я пытаюсь скопировать выглядеть например так,  \\ WorkPC \ C $ \ Users \ Andrew \ Desktop and \\ WorkPC \ C $ \ Users \ Robin \ Desktop и  \\ WorkPC \ C $ \ Users \ Andrew \ Desktop and \\ WorkPC \ C $ \ Users \ Robin \ Desktop, если имеется несколько пользователей.
Но это просто папки рабочего стола для каждого пользователя, содержащие файлы и вложенные папки, а также файлы папку, я wan’T, чтобы скопировать в новое место назначения
Можно ли это сделать с вашим кодом?

Цитата: jmcilhinney
 Первоначально написал ken76 View Post
Можно ли что то сделать с этим кодом?

Why вы спрашиваете меня, что вместо того, чтобы попытаться его для себя? Если это работает, это ваш ответ. Если это не сработает, ты пост назад и скажите нам точно, что вы сделали и что именно произошло, когда вы сделали это. Вы не спрашивайте нас, чтобы сказать вам, вещи, которые можно легко выяснить для себя.

Об авторе

editor administrator

})