在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
接触C#已近两年,现将整理的知识做了一下总结,以方便自己和大家学习!本节要说的是C#中复制文件夹及文件的两种方法,闲话不说,直接附代码如下: 方法一: 1 /// <summary> 2 /// 复制文件夹及文件 3 /// </summary> 4 /// <param name="sourceFolder">原文件路径</param> 5 /// <param name="destFolder">目标文件路径</param> 6 /// <returns></returns> 7 public int CopyFolder(string sourceFolder, string destFolder) 8 { 9 try 10 { 11 //如果目标路径不存在,则创建目标路径 12 if (!System.IO.Directory.Exists(destFolder)) 13 { 14 System.IO.Directory.CreateDirectory(destFolder); 15 } 16 //得到原文件根目录下的所有文件 17 string[] files = System.IO.Directory.GetFiles(sourceFolder); 18 foreach (string file in files) 19 { 20 string name = System.IO.Path.GetFileName(file); 21 string dest = System.IO.Path.Combine(destFolder, name); 22 System.IO.File.Copy(file, dest);//复制文件 23 } 24 //得到原文件根目录下的所有文件夹 25 string[] folders = System.IO.Directory.GetDirectories(sourceFolder); 26 foreach (string folder in folders) 27 { 28 string name = System.IO.Path.GetFileName(folder); 29 string dest = System.IO.Path.Combine(destFolder, name); 30 CopyFolder(folder, dest);//构建目标路径,递归复制文件 31 } 32 return 1; 33 } 34 catch (Exception e) 35 { 36 MessageBox.Show(e.Message); 37 return 0; 38 } 39 40 } 方法二: 1 /// <summary> 2 /// 复制文件夹及文件 3 /// </summary> 4 /// <param name="sourceFolder">原文件路径</param> 5 /// <param name="destFolder">目标文件路径</param> 6 /// <returns></returns> 7 public int CopyFolder2(string sourceFolder, string destFolder) 8 { 9 try 10 { 11 string folderName = System.IO.Path.GetFileName(sourceFolder); 12 string destfolderdir = System.IO.Path.Combine(destFolder,folderName); 13 string[] filenames = System.IO.Directory.GetFileSystemEntries(sourceFolder); 14 foreach (string file in filenames)// 遍历所有的文件和目录 15 { 16 if (System.IO.Directory.Exists(file)) 17 { 18 string currentdir = System.IO.Path.Combine(destfolderdir, System.IO.Path.GetFileName(file)); 19 if (!System.IO.Directory.Exists(currentdir)) 20 { 21 System.IO.Directory.CreateDirectory(currentdir); 22 } 23 CopyFolder2(file, destfolderdir); 24 } 25 else 26 { 27 string srcfileName =System.IO.Path.Combine(destfolderdir,System.IO.Path.GetFileName(file)); 28 if (!System.IO.Directory.Exists(destfolderdir)) 29 { 30 System.IO.Directory.CreateDirectory(destfolderdir); 31 } 32 System.IO.File.Copy(file, srcfileName); 33 } 34 } 35 36 return 1; 37 } 38 catch (Exception e) 39 { 40 41 MessageBox.Show(e.Message); 42 return 0; 43 } 44 45 } 方法一 和 方法二 都可以实现文件夹及文件的复制,两者的区别是:方法一的复制并没有包括原文件的根目录名称(要复制的文件除了根目录文件夹以外其他的都原封不动地搬到了目的地),方法二的复制包括了原文件的根目录名称(要复制的文件原封不动的搬到目的地),比如:要把E:/123的文件复制到F盘(123文件夹下包含其他文件夹及文件,比如包含了234文件夹和一个1.txt文档),如果用方法一,只是把E盘123文件夹下的子文件夹及子文件复制到了F盘,如果用方法二,则是把E盘下的整个123文件夹都复制到了F盘!由此可见,方法一 适合重命名复制,方法二 适合直接复制!
|
请发表评论