DGFileUtil.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. using UnityEngine;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. public class DGFileUtil
  6. {
  7. public static List<string> GetAllFiles(DirectoryInfo dir, string except=null)
  8. {
  9. List<string> fileList = new List<string>();
  10. if(!Directory.Exists(dir.FullName) && !File.Exists(dir.FullName))
  11. {
  12. Debug.LogError("Directory not exists : "+dir.FullName);
  13. return fileList;
  14. }
  15. FileInfo[] allFile = dir.GetFiles();
  16. for(int i=0; i<allFile.Length; i++)
  17. {
  18. FileInfo fi = allFile[i];
  19. if(except != null && fi.Name.IndexOf(except) != -1)
  20. {
  21. continue;
  22. }
  23. fileList.Add(fi.FullName);
  24. }
  25. DirectoryInfo[] allDir= dir.GetDirectories();
  26. foreach (DirectoryInfo d in allDir)
  27. {
  28. if(d.FullName == dir.FullName)
  29. {
  30. continue;
  31. }
  32. fileList.AddRange(GetAllFiles(d, except));
  33. }
  34. return fileList;
  35. }
  36. public static List<string> GetChildrenDirectory(DirectoryInfo dir)
  37. {
  38. List<string> fileList = new List<string>();
  39. if(!Directory.Exists(dir.FullName) && !File.Exists(dir.FullName))
  40. {
  41. Debug.LogError("Directory not exists : "+dir.FullName);
  42. return fileList;
  43. }
  44. DirectoryInfo[] allDir= dir.GetDirectories();
  45. foreach (DirectoryInfo d in allDir)
  46. {
  47. if(d.FullName == dir.FullName)
  48. {
  49. continue;
  50. }
  51. fileList.Add(d.FullName);
  52. }
  53. return fileList;
  54. }
  55. public static void CreateDirectoryWhenNotExists(string destination)
  56. {
  57. destination = destination.Replace("\\", "/");
  58. string dir = destination.Substring(0, destination.LastIndexOf("/"));
  59. if(!Directory.Exists(dir))
  60. {
  61. Directory.CreateDirectory(dir);
  62. }
  63. }
  64. public static void CopyFile(string source, string destination)
  65. {
  66. CreateDirectoryWhenNotExists(destination);
  67. File.Copy(source, destination);
  68. }
  69. public static void CopyFileOrDirectory(string source, string destination, string except=null)
  70. {
  71. List<string> list = DGFileUtil.GetAllFiles(new DirectoryInfo(source), except);
  72. for(int i=0; i<list.Count; i++)
  73. {
  74. string path = list[i];
  75. string destPath = destination + path.Substring(source.Length);
  76. DGFileUtil.CopyFile(path, destPath);
  77. }
  78. }
  79. public static string GetFileNameByPath(string path)
  80. {
  81. path = path.Replace("\\", "/");
  82. return path.Substring(path.LastIndexOf("/")+1);
  83. }
  84. }