最近有网友留言,问了一个问题,如何把一个文件夹里的所有内容复制至另一个文件夹?想了1秒回复:直接Ctrl+C和Ctrl+V不就行了?然后就没有下文了。现在想来,他的意思是问怎么用代码实现的?抱歉了,现在才想到,代码实现也不难,都在下面了
1、实现的代码
private void CopyFolder(string sourceFolder, string targetFolder)
{
//1,判断文件夹最末的字符是不是\
if (targetFolder[targetFolder.Length - 1] != System.IO.Path.DirectorySeparatorChar)
{
targetFolder += System.IO.Path.DirectorySeparatorChar;
}
//2,判断目标文件夹是否存在?不存在就创建
if (!System.IO.Directory.Exists(targetFolder))
{
System.IO.Directory.CreateDirectory(targetFolder);
}
//3,同时获取源文件的文件和子文件夹
string[] fileList = System.IO.Directory.GetFileSystemEntries(sourceFolder);
//4,遍历所有的文件和目录
foreach (string file in fileList)
{
//4.1,先判断是否是文件夹。若是就递归Copy下面的文件
if (System.IO.Directory.Exists(file))
{
this.CopyFolder(file, targetFolder + System.IO.Path.GetFileName(file));
}
else
{
//4.1,若不是则直接Copy文件
//a,直接复制复制
//System.IO.File.Copy(file, targetFolder + System.IO.Path.GetFileName(file), true);
//b,创建一个同名的txt空文件
string targetFile = targetFolder + Path.GetFileNameWithoutExtension(file) + ".txt";
FileHelper.WriteFileToText(targetFile, "", Encoding.UTF8, false);
}
}
}
2、代码调用示例
sourceFolder = @"e:\entertain2"; targetFolder = @"e:\entertain2\"; this.CopyFolder(sourceFolder, targetFolder);
3、2个知识点
1、递归复制
2、Directory.GetFileSystemEntries,这个方法可以同时获得文件和子文件夹
相关阅读

文章评论