private void CopyFile(string source, string destination)
{
bool flag = true;
if (!Directory.Exists(destination) && flag == true)
{
Directory.CreateDirectory(destination);
flag = false;
}
DirectoryInfo rootdir = new DirectoryInfo(source);
//遍历文件
FileInfo[] fileinfo = rootdir.GetFiles();
foreach (FileInfo file in fileinfo)
{
file.CopyTo(destination + "\\" + file.Name, true);
}
DirectoryInfo[] childdir = rootdir.GetDirectories();
for (int i = 0; i < childdir.Length; i++)
{
try
{
FileInfo[] fileinfo_child = childdir[i].GetFiles();
foreach (FileInfo file_child in fileinfo_child)
{
file_child.CopyTo(destination + "\\" + file_child.Name, true);
}
//递归方法
DirectoryInfo[] childdir_child = childdir[i].GetDirectories();
if (childdir_child.Length > 0)
{
for (int j = 0; j < childdir_child.Length; j++)
{
CopyFile(source + "\\" + childdir[i].Name + "\\" + childdir_child[j].Name, destination);
}
}
}
catch (Exception ex)
{
Console.Write(ex.Message);
continue;
}
}
}
--------------------------------------------------------------
另外一种方法:
// 复制合并图片到一个文件夹
static void CopyPicToFileDirectory()
{
Console.WriteLine("请输入源文件夹路径:");
string sPath = Console.ReadLine();
if (!Directory.Exists(sPath))
{
Console.WriteLine("源文件夹路径不存在!");
return;
}
Console.WriteLine("请输入目标文件夹路径:");
string dPath = Console.ReadLine();
if (!Directory.Exists(dPath))
{
Console.WriteLine("目标文件夹路径不存在!");
return;
}
Console.WriteLine("是否删除原文件:Press [Y]/[N]");
bool isMove = false;
string str1 = null;
str1 = Console.ReadLine();
bool flag = (str1 == null)?false:true;
while (flag)
{
if ("y".Equals(str1.Trim().ToLower()))
{
//yes
isMove = true;
break;
}
else if ("n".Equals(str1.Trim().ToLower()))
{
//no
isMove = false;
break;
}
Console.WriteLine("是否删除原文件:Press [Y]/[N]");
str1 = Console.ReadLine();
flag = (str1 == null) ? false : true;
}
DoCopyFile(sPath, dPath, isMove);
}
private static void DoCopyFile(string sPath, string dPath, bool isMove)
{
DirectoryInfo directoryInfo = new DirectoryInfo(sPath);
string destionFilename = null;
FileInfo[] fileInfos = directoryInfo.GetFiles();
foreach (FileInfo f in fileInfos)
{
destionFilename = dPath.Trim('\\') + "\\" + f.Name;
f.CopyTo(destionFilename, true);
if (isMove)
{
f.Delete();
}
}
DirectoryInfo[] subDirectories = directoryInfo.GetDirectories();
foreach (DirectoryInfo d in subDirectories)
{
DoCopyFile(d.FullName, dPath, isMove);
}
}

浙公网安备 33010602011771号