复制目录中的所有文件

如何将一个目录中的所有内容复制到另一个目录中,然后循环遍历每个文件?

你不能。 DirectoryDirectoryInfo都不提供Copy方法。 你需要自己实现这个。

 void Copy(string sourceDir, string targetDir) { Directory.CreateDirectory(targetDir); foreach(var file in Directory.GetFiles(sourceDir)) File.Copy(file, Path.Combine(targetDir, Path.GetFileName(file))); foreach(var directory in Directory.GetDirectories(sourceDir)) Copy(directory, Path.Combine(targetDir, Path.GetFileName(directory))); } 

请阅读意见,以了解这个简单的方法的一些问题。

Msdn有这方面的指导 – 如何:复制目录

您可以使用VB的FileSystem.CopyDirectory方法来简化任务:

 using Microsoft.VisualBasic.FileIO; foo(){ FileSystem.CopyDirectory(directoryPath, tempPath); } 
 using System.IO; string sourcePath = @"D:\test"; string targetPath = @"D:\test_new"; if (!Directory.Exists(targetPath)) { Directory.CreateDirectory(targetPath); } foreach (var srcPath in Directory.GetFiles(sourcePath)) { //Copy the file from sourcepath and place into mentioned target path, //Overwrite the file if same file is exist in target path File.Copy(srcPath, srcPath.Replace(sourcePath, targetPath), true); } 

你不能。 但是你可以使用一些简洁的代码,如Directory.GetFiles(mydir).ToList().ForEach(f => File.Copy(f, otherdir + "\\" f);

执行xcopy source_directory\*.* destination_directory作为外部命令。 当然这只会在Windows机器上运行。

这是一个迭代的解决scheme。 这将利用Directory.GetFilesrecursion检索源目录中所有目录和子目录中的所有文件,并在复制到目标目录时保留此目录结构:

 string sourceDir, targetDir; Directory.GetFiles(sourceDir, "*", SearchOption.AllDirectories).ToList() .ForEach(file => { var targetPath = Path.Combine(targetDir, Path.GetRelativePath(sourceDir, file)); var fileInfo = new FileInfo(targetPath); Directory.CreateDirectory(fileInfo.DirectoryName); File.Copy(file, fileInfo.FullName); }); 
 Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory + @"resources\html") .ToList() .ForEach(f => File.Copy(f, folder + "\\" + f.Substring(f.LastIndexOf("\\"))));