两种方式本质是一样的,代码也差不多。
1、文件夹拷贝代码一:
源文件夹名为AAA,目标文件夹为BBB。
拷贝完成后,文件夹名字更改为BBB。
比如AAA/1.jpng,会变成BBB.jpg。
//如果前面是\Android,后面是com.xx,则复制之后的Android名字更改为com.xx public static int CopyFolder(string sourceFolder, string destFolder) { try { //如果目标路径不存在,则创建目标路径 if (!System.IO.Directory.Exists(destFolder)) { System.IO.Directory.CreateDirectory(destFolder); } //得到原文件根目录下的所有文件 string[] files = System.IO.Directory.GetFiles(sourceFolder); foreach (string file in files) { string name = System.IO.Path.GetFileName(file); string dest = System.IO.Path.Combine(destFolder, name); System.IO.File.Copy(file, dest, true);//复制文件 } //得到原文件根目录下的所有文件夹 string[] folders = System.IO.Directory.GetDirectories(sourceFolder); foreach (string folder in folders) { string name = System.IO.Path.GetFileName(folder); string dest = System.IO.Path.Combine(destFolder, name); CopyFolder(folder, dest);//构建目标路径,递归复制文件 } return 1; } catch (Exception e) { return 0; } }
2、文件夹拷贝代码2:
源文件夹为AAA,目标文件夹为BBB。
将AAA目录下的内容,都拷贝至BBB目录下。
//假如前面为\bin,后面为asset,则是将bin(包含bin)全部复制到asset下。 public static int CopyFolder2(string sourceFolder, string destFolder) { try { string folderName = System.IO.Path.GetFileName(sourceFolder); string destfolderdir = System.IO.Path.Combine(destFolder, folderName); string[] filenames = System.IO.Directory.GetFileSystemEntries(sourceFolder); foreach (string file in filenames)// 遍历所有的文件和目录 { if (System.IO.Directory.Exists(file)) { string currentdir = System.IO.Path.Combine(destfolderdir, System.IO.Path.GetFileName(file)); if (!System.IO.Directory.Exists(currentdir)) { System.IO.Directory.CreateDirectory(currentdir); } CopyFolder2(file, destfolderdir); } else { string srcfileName = System.IO.Path.Combine(destfolderdir, System.IO.Path.GetFileName(file)); if (!System.IO.Directory.Exists(destfolderdir)) { System.IO.Directory.CreateDirectory(destfolderdir); } System.IO.File.Copy(file, srcfileName, true); } } return 1; } catch (Exception e) { return 0; } }
标签:file,string,C#,复制,System,文件夹,IO,Directory,Path From: https://www.cnblogs.com/vsirWaiter/p/17567979.html