CopyFolder.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using System;
  2. using System.IO;
  3. using UnityEditor;
  4. using UnityEngine;
  5. namespace YIUI.Luban.Editor
  6. {
  7. public static class CopyFolder
  8. {
  9. public static bool Copy(string sourceFolder, string targetFolder)
  10. {
  11. DirectoryInfo sourceDir = new(sourceFolder);
  12. DirectoryInfo targetDir = new(targetFolder);
  13. var result = false;
  14. if (Directory.Exists(targetFolder))
  15. {
  16. UnityTipsHelper.CallBack($"{targetFolder} 已存在!!!\n \n警告将会执行全覆盖操作!!!", () =>
  17. {
  18. Directory.Delete(targetFolder, true);
  19. result = Start();
  20. });
  21. }
  22. else
  23. {
  24. result = Start();
  25. }
  26. return result;
  27. bool Start()
  28. {
  29. try
  30. {
  31. Directory.CreateDirectory(targetFolder);
  32. CopyAll(sourceDir, targetDir);
  33. return true;
  34. }
  35. catch (Exception e)
  36. {
  37. Debug.LogError($"{targetFolder} 创建错误 {e}");
  38. }
  39. return false;
  40. }
  41. }
  42. private static void CopyAll(DirectoryInfo source, DirectoryInfo target)
  43. {
  44. if (!target.Exists)
  45. {
  46. target.Create();
  47. }
  48. foreach (FileInfo fi in source.GetFiles())
  49. {
  50. string targetFilePath = Path.Combine(target.FullName, fi.Name);
  51. fi.CopyTo(targetFilePath, true);
  52. }
  53. foreach (DirectoryInfo diSourceSubDir in source.GetDirectories())
  54. {
  55. DirectoryInfo nextTargetSubDir = target.CreateSubdirectory(diSourceSubDir.Name);
  56. CopyAll(diSourceSubDir, nextTargetSubDir);
  57. }
  58. }
  59. }
  60. }