【发布时间】:2015-01-03 17:23:00
【问题描述】:
我正在尝试将一个目录复制到另一个路径。
我找到了这个方法,但是它不复制目录,只复制里面的子目录和文件:
string sourcedirectory = Environment.ExpandEnvironmentVariables("%AppData%\\Program");
foreach (string dirPath in Directory.GetDirectories(sourcedirectory, "*", SearchOption.AllDirectories))
{
Directory.CreateDirectory(dirPath.Replace(sourcedirectory, folderDialog.SelectedPath));
}
foreach (string newPath in Directory.GetFiles(sourcedirectory, "*.*", SearchOption.AllDirectories))
{
File.Copy(newPath, newPath.Replace(sourcedirectory, folderDialog.SelectedPath), true);
}
如何在输出中获取包含所有文件和子文件夹的“程序”文件夹?
【问题讨论】:
-
“它不复制目录”是什么意思?它显然会复制目录本身——如果输出中不存在顶级目录,它将无法复制子目录和文件。您的意思是它不会复制顶级目录中的文件吗?看起来确实如此,只需扫描代码即可。 (就个人而言,我更喜欢递归解决方案,而不是依赖
string.Replace()或其他路径操作,但这里的代码看起来足够合理)。 -
@PeterDuniho 未创建目录“Program”,但其中的文件和文件夹已复制到目标位置。我需要在输出中获取“程序”目录。
-
我相信这是重复的问题。看看这个问题的 MSDN 解决方案(我认为它是最后一个) - 它应该复制所有内容,包括目录本身。 Copy directory c#
-
@DotNet:它应该可以正常工作,如果您设置
newPath以便它实际上是您希望输出到的名为Program的输出目录。在最坏的情况下,您只需将newPath = Path.Combine(newPath, Path.GetFileName(sourcedirectory))添加到代码中,就在第一个foreach之前。 -
@ZivWeissman 这不是一个重复的问题。我使用的方法与您提到的问题的其中一个答案中的方法相同。