首页 > 编程 > C# > 正文

C#拷贝整个文件夹及子目录和其中文件的方法

2020-01-24 00:04:32
字体:
来源:转载
供稿:网友

下面一段代码给大家介绍C#拷贝整个文件夹以及子目录和其中文件,具体代码如下所示:

private void CopyDirectory( string srcPath, string desPath)   {    string folderName = srcdir.Substring(srcdir.LastIndexOf( "//" )+1);    string desfolderdir = desPath + "//" + folderName;    if (desdir.LastIndexOf( "//" ) == (desPath.Length - 1))    {     desfolderdir = desPath + folderName;    }    string [] filenames = Directory.GetFileSystemEntries(srcPath);    foreach ( string file in filenames)     {     if (Directory.Exists(file))      {      string currentdir = desfolderdir + "//" + file.Substring(file.LastIndexOf( "//" ) + 1);      if (!Directory.Exists(currentdir))      {       Directory.CreateDirectory(currentdir);      }      CopyDirectory(file, desfolderdir);     }     else      {      string srcfileName = file.Substring(file.LastIndexOf( "//" )+1);      srcfileName = desfolderdir + "//" + srcfileName;      if (!Directory.Exists(desfolderdir))      {       Directory.CreateDirectory(desfolderdir);      }           File.Copy(file, srcfileName);     }    }    }

ps:C# 拷贝指定文件夹下的所有文件及其文件夹到指定目录

要拷贝的文件及其文件夹结构

其中.lab文件不能覆盖

/// <summary>/// 拷贝oldlab的文件到newlab下面/// </summary>/// <param name="sourcePath">lab文件所在目录(@"~/labs/oldlab")</param>/// <param name="savePath">保存的目标目录(@"~/labs/newlab")</param>/// <returns>返回:true-拷贝成功;false:拷贝失败</returns>public bool CopyOldLabFilesToNewLab(string sourcePath, string savePath){  if (!Directory.Exists(savePath))  {    Directory.CreateDirectory(savePath);  }  #region //拷贝labs文件夹到savePath下  try  {    string[] labDirs = Directory.GetDirectories(sourcePath);//目录    string[] labFiles = Directory.GetFiles(sourcePath);//文件    if (labFiles.Length > 0)    {      for (int i = 0; i < labFiles.Length; i++)      {        if (Path.GetExtension(labFiles[i]) != ".lab")//排除.lab文件        {          File.Copy(sourcePath + "//" + Path.GetFileName(labFiles[i]), savePath + "//" + Path.GetFileName(labFiles[i]), true);        }      }    }    if (labDirs.Length > 0)    {      for (int j = 0; j < labDirs.Length; j++)      {        Directory.GetDirectories(sourcePath + "//" + Path.GetFileName(labDirs[j]));        //递归调用        CopyOldLabFilesToNewLab(sourcePath + "//" + Path.GetFileName(labDirs[j]), savePath + "//" + Path.GetFileName(labDirs[j]));      }    }  }  catch (Exception)  {    return false;  }  #endregion  return true;}

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表