复制文件夹

拜拜、爱过 提交于 2020-01-10 10:54:40

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
}
}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!