public static class CopyFile
{
/// <summary>
/// oldfile 需要复制文件的路径
/// newsfile 文件复制到什么地方(路径)
/// isOverlap 是否覆盖同名文件 true 为覆盖 false 不覆盖,但会重新命名
/// </summary>
/// <param name="oldfile"></param>
/// <param name="newsfile"></param>
/// <param name="isOverlap"></param>
public static void Copy(string oldfile,string newsfile,bool isOverlap)
{
string folderName = oldfile.Substring(oldfile.LastIndexOf("\\") + 1);
string desfolderdir = newsfile + "\\" + folderName;
if (newsfile.LastIndexOf("\\") == (newsfile.Length - 1))
{
desfolderdir = newsfile + folderName;
}
string[] filenames = Directory.GetFileSystemEntries(oldfile);
foreach (string file in filenames)// 遍历所有的文件和目录
{
if (Directory.Exists(file))// 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件
{
string currentdir = desfolderdir + "\\" + file.Substring(file.LastIndexOf("\\") + 1);
if (!Directory.Exists(currentdir))
{
Directory.CreateDirectory(currentdir);
}
Copy(file, desfolderdir,isOverlap);
}
else // 否则直接copy文件
{
string srcfileName = file.Substring(file.LastIndexOf("\\") + 1);
srcfileName = desfolderdir + "\\" + srcfileName;
if (!Directory.Exists(desfolderdir))
{
Directory.CreateDirectory(desfolderdir);
}
if (isOverlap)
{
File.Copy(file, srcfileName, true);
}
else
{
if (File.Exists(srcfileName))//存在文件则重命名
{
srcfileName = System.IO.Path.GetDirectoryName(srcfileName)+"\\"+ System.IO.Path.GetFileNameWithoutExtension(srcfileName) + "副本" + DateTime.Now.Millisecond + srcfileName.Substring(srcfileName.LastIndexOf("."));
File.Copy(file, srcfileName);
}
else
{
File.Copy(file, srcfileName);
}
}
}
}//foreach
}
}
来源:https://www.cnblogs.com/Argus-sqh/p/6894868.html