不多bb,实现代码如下
//Folder是需要复制的总目录,lastpath是目标目录
private void CopyFile(DirectoryInfo Folders,string lastpath)
{
//首先复制目录下的文件
foreach (FileInfo fileInfo in Folders.GetFiles())
{
if (fileInfo.Exists)
{
//如果列表有记录的文件,就跳过
if (filePaths.Contains(fileInfo.FullName))
continue;
string filename = fileInfo.FullName.Substring(fileInfo.FullName.LastIndexOf('\\'));
fileInfo.CopyTo(lastpath + filename, true);
}
}
//其次复制目录下的文件夹,并且进行遍历
foreach (DirectoryInfo Folder in Folders.GetDirectories())
{
//如果有记录在列表中,则跳过该目录
if (folderPaths.Contains(Folder.FullName)) continue;
string Foldername = Folder.FullName.Substring(Folder.FullName.LastIndexOf('\\'));
//复制后文件夹目录
string copypath = lastpath + Foldername;
//创建文件夹
if(!Directory.Exists(copypath))
Directory.CreateDirectory(copypath);
//将目录加深,遍历子目录中的文件
lastpath = copypath;
//子目录递归调用,遍历子目录
CopyFile(Folder,lastpath);
//上一个子目录中归来,还原目录深度,循环至下一子目录
lastpath = lastpath.Substring(0, lastpath.LastIndexOf('\\'));
}
}
代码如上