复制包含所有文件和文件夹的目录
本文关键字:文件夹 包含所 文件 复制 | 更新日期: 2023-09-27 18:29:34
我正在尝试将一个目录复制到另一个路径
我找到了这个方法,但它不复制目录,只复制其中的子目录和文件:
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 sourcedirectory = Environment.ExpandEnvironmentVariables("%AppData%''Program");
folderDialog.SelectedPath = Path.Combine(folderDialog.SelectedPath,
Path.GetFileName(sourcedirectory));
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);
}
您可以使用递归函数来执行此操作:
private void button1_Click(object sender, EventArgs e)
{
this.CopyAll(new DirectoryInfo(@"D:'Original"), new DirectoryInfo(@"D:'Copy"));
}
private void CopyAll(DirectoryInfo oOriginal, DirectoryInfo oFinal)
{
foreach (DirectoryInfo oFolder in oOriginal.GetDirectories())
this.CopyAll(oFolder, oFinal.CreateSubdirectory(oFolder.Name));
foreach (FileInfo oFile in oOriginal.GetFiles())
oFile.CopyTo(oFinal.FullName + @"'" + oFile.Name, true);
}