您的位置:首页 > 编程语言 > C#

c#复制文件夹(复制主文件夹和不复制主文件夹)

2016-05-09 11:33 507 查看
复制主文件夹

private void CopyDirectory(string srcdir, string desdir)
{
try
{
if (File.Exists(srcdir))
{
File.Copy(srcdir, desdir);
}
else
{
string folderName = srcdir.Substring(srcdir.LastIndexOf("\\") + 1);

string desfolderdir = desdir + "\\" + folderName;

if (desdir.LastIndexOf("\\") == (desdir.Length - 1))
{
desfolderdir = desdir + folderName;
}
string[] filenames = Directory.GetFileSystemEntries(srcdir);

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

CopyDirectory(file, desfolderdir);
}

else // 否则直接copy文件
{
string srcfileName = file.Substring(file.LastIndexOf("\\") + 1);

srcfileName = desfolderdir + "\\" + srcfileName;

if (!Directory.Exists(desfolderdir))
{
Directory.CreateDirectory(desfolderdir);
}

File.Copy(file, srcfileName);
}
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}


不复制主文件夹
public static void CopyDirectory(string srcPath, string destPath)
{
  try
{
    DirectoryInfo dir = new DirectoryInfo(srcPath);
    FileSystemInfo[] fileinfo = dir.GetFileSystemInfos(); //获取目录下(不包含子目录)的文件和子目录
    foreach (FileSystemInfo i in fileinfo)
{
if (i is DirectoryInfo) //判断是否文件夹
{
if (!Directory.Exists(destPath+"\\"+i.Name))
{
Directory.CreateDirectory(destPath + "\\" + i.Name); //目标目录下不存在此文件夹即创建子文件夹
}
CopyDir(i.FullName, destPath + "\\" + i.Name); //递归调用复制子文件夹
}
else
{
File.Copy(i.FullName, destPath + "\\" + i.Name,true); //不是文件夹即复制文件,true表示可以覆盖同名文件
}
}
}
catch (Exception e)
{
throw;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: