现在问题来了:我有很多代码都做同样的事情。也就是说,它将两个文件夹的内容复制到目标文件夹中,并将它们合并到目标文件夹中。我的问题是,我无法找到(经过大量谷歌搜索)如何实际复制源目录+内容,而不仅仅是其内容和子文件夹,然后最终合并。
这可能是我获取目录的方式:我使用文件夹选择对话框,将路径名添加到列表框(显示),然后从列表框中的项目创建(字符串)目录列表。
这是到目前为止的代码。(部分来自 MSDN)
public static void CopyAll(DirectoryInfo source, DirectoryInfo target)
{
if (source.FullName.ToLower() == target.FullName.ToLower())
{
return;
}
// Check if the target directory exists, if not, create it.
if (Directory.Exists(target.FullName) == false)
{
Directory.CreateDirectory(target.FullName);
}
// Copy each file into it's new directory.
foreach (FileInfo fi in source.GetFiles())
{
fi.CopyTo(Path.Combine(target.ToString(), fi.Name), true);
}
// Copy each subdirectory using recursion.
foreach (DirectoryInfo diSourceSubDir in source.GetDirectories())
{
DirectoryInfo nextTargetSubDir =
target.CreateSubdirectory(diSourceSubDir.Name);
CopyAll(diSourceSubDir, nextTargetSubDir);
}
}
//This is inside a button click Method
List<string> pathList = new List<string>();
pathList = lstBox.Items.Cast<String>().ToList();
string sourceDirectory;
string targetDirectory;
DirectoryInfo dirSource;
DirectoryInfo dirTarget;
for (int i = 0 ; i < pathList.Count; i++)
{
sourceDirectory = pathList.ElementAt(i);
targetDirectory = browserSave.SelectedPath; //browserSave is the Folder Selection Dialog
dirSource = new DirectoryInfo(sourceDirectory);
dirTarget = new DirectoryInfo(targetDirectory);
CopyAll(dirSource, dirTarget);
}
令人讨厌的是,C# 没有 Directory.Copy 功能,这将非常有用。回顾一下。
我选择文件夹 1。我选择文件夹 2。我选择目标文件夹。我按确定。预期结果:目标文件夹有两个文件夹,文件夹 1 和文件夹 2 里面。两者都有里面的所有文件。实际结果:目标文件夹合并了松散的文件,源文件夹的子目录完好无损。(这很烦人)
我希望这是足够的信息,可以为您的专业人士提供帮助。