快速搜索
主页 > 软件开发 > C#开发 >

用C#实现文件夹拷贝

时间:2011-04-12 23:18来源:未知 作者:admin 点击:
分享到:
C# 中没有拷贝整个文件夹的方法,最近需要用到,就写了一个Demo,拿出来跟大家分享一下 主要思想: 1、写一个拷贝文件夹的函数CopyFolder,传入源文件夹路径和目的文件夹路径 2、判断

C#中没有拷贝整个文件夹的方法,最近需要用到,就写了一个Demo,拿出来跟大家分享一下

主要思想:

1、写一个拷贝文件夹的函数CopyFolder,传入源文件夹路径和目的文件夹路径

2、判断目的文件夹路径是否存在,如果不存在,创建此文件夹

3、获取源文件夹下的所有文件,拷贝这些文件到目的文件夹

4、获取源文件夹下的所有文件夹,循环调用CopyFolder(此处利用了递归)

代码:

拷贝文件夹

  1. using?System;using?System.IO;namespace?FolderService{??? ?
  2. public?class?FolderService???? ?
  3. {???????? ?
  4. static?void?Main(string[]?args)???????? ?
  5. {???????????? ?
  6. if?(args.Length?!=?2)???????????? ?
  7. {???????????????? ?
  8. Console.WriteLine("请输入源文件夹地址和目的文件夹地址!");?? ?
  9. return;???????????? ?
  10. }???????????? ?
  11. //?判断源文件夹是否存在???????????? ?
  12. if?(!Directory.Exists(args[0]))????????????{???????????????? ?
  13. Console.WriteLine("源文件夹不存在!");??? ?
  14. return;???????????? ?
  15. }???????????? ?
  16. //?拷贝文件夹???????????? ?
  17. FolderService?copy?=?new?FolderService();??? ?
  18. string?flag?=?copy.CopyFolder(args[0],?args[1]);???????????? ?
  19. Console.WriteLine(flag);???????? ?
  20. }???????? ?
  21. ///????????? ?
  22. ///?Copy文件夹???????? ?
  23. ///????????? ?
  24. ///?源文件夹路径???????? ?
  25. ///?目的文件夹路径???????? ?
  26. ///?完成状态:success-完成;其他-报错???????? ?
  27. public?string?CopyFolder(string?sPath,?string?dPath)???????? ?
  28. {???????????? ?
  29. string?flag?=?"success";???????????? ?
  30. try???????????? ?
  31. {???????????????? ?
  32. //?创建目的文件夹???????????????? ?
  33. if?(!Directory.Exists(dPath))??????????? ?
  34. {??????????????????? ?
  35. ?Directory.CreateDirectory ?
  36. (dPath);??????????????? ?
  37. ?}???????????????? ?
  38. //?拷贝文件???????????????? ?
  39. DirectoryInfo?sDir?=?new?DirectoryInfo(sPath);???????????????? ?
  40. FileInfo[]?fileArray?=?sDir.GetFiles();????????? ?
  41. foreach?(FileInfo?file?in?fileArray)????????????????{???????????????????? ?
  42. file.CopyTo(dPath?+?"\\"?+?file.Name,?true);??????????????? ?
  43. ?}???????????????? ?
  44. //?循环子文件夹???????????????? ?
  45. DirectoryInfo?dDir?=?new?DirectoryInfo(dPath);??????????????? ?
  46. ?DirectoryInfo[]?subDirArray?=?sDir.GetDirectories();???????????????? ?
  47. foreach?(DirectoryInfo?subDir?in?subDirArray)??????????????? ?
  48. ?{???????????????????? ?
  49. CopyFolder(subDir.FullName,?dPath?+?"//"?+?subDir.Name);???????????????? ?
  50. }??????????? ?
  51. ?}??????????? ?
  52. ?catch?(Exception?ex)???????????? ?
  53. {???????????????? ?
  54. flag?=?ex.ToString();??????????? ?
  55. ?}???????????? ?
  56. return?flag;??????? ?
  57. ?}???? ?
  58. }}?

测试Dmo:

1、把代码保存为FolderService.cs,把此cs文件放到H:\Program Files\Microsoft Visual Studio 9.0\VC下(具体根据VS安装路径不同,地址有所不同)

2、打开Visual Studio Tools中的Visual Studio 2008 Command Prompt,把FolderService.cs拖到此Command Prompt中,在路径最前方加入csc+空格,回车编译此程序,如下图:

编译程序

3、可以在目录H:\Program Files\Microsoft Visual Studio 9.0\VC中看到生成了一个FolderService.exe文件,运行此文件(打开cmd.exe,把FolderService.exe拖到cmd.exe中,加上参数,回车),如下图:

运行文件

4、这时可以看到,E:\test目录下的文件全部都拷贝到G:\test目录下了
?


精彩图集

赞助商链接