FileToolkit.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using System.IO;
  5. using SFB;
  6. using System;
  7. public class FileToolkit
  8. {
  9. public static ExtensionFilter extensionFilter = new ExtensionFilter("图像/视频文件", "wmv", "mp4", "avi", "mov", "WMV", "MP4", "AVI", "MOV", "jpg", "png", "JPG", "PNG", "jpeg", "JPEG");
  10. public static List<ExtensionFilter> GetExtensionFilters()
  11. {
  12. List<ExtensionFilter> extensionFilters = new List<ExtensionFilter>();
  13. extensionFilters.Add(extensionFilter);
  14. return extensionFilters;
  15. }
  16. /// <summary>
  17. /// 读取本地数据并保存到指定位置
  18. /// </summary>
  19. /// <param name="fliePath"></param>
  20. /// <param name="targetFilePath"></param>
  21. public static void ReadLocalFileDataAndSaveToTargetPath(string fliePath, string targetFilePath)
  22. {
  23. byte[] buffer = GetLoaclFileData(fliePath);
  24. FileLocalSave(targetFilePath,buffer);
  25. }
  26. /// <summary>
  27. /// 获取本地文件数据
  28. /// </summary>
  29. /// <param name="filePath"></param>
  30. /// <returns></returns>
  31. public static byte[] GetLoaclFileData(string filePath)
  32. {
  33. using (FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate))
  34. {
  35. byte[] buffer = new byte[fs.Length];
  36. fs.Read(buffer, 0, buffer.Length);
  37. fs.Close();
  38. return buffer;
  39. }
  40. }
  41. /// <summary>
  42. /// 文件本地保存
  43. /// </summary>
  44. public static void FileLocalSave(string savePath,byte[] data)
  45. {
  46. Debug.Log(data.Length);
  47. using (FileStream fs = new FileStream(savePath,FileMode.OpenOrCreate,FileAccess.ReadWrite))
  48. {
  49. fs.Write(data, 0, data.Length);
  50. fs.Flush();
  51. }
  52. }
  53. /// <summary>
  54. /// 删除本地文件
  55. /// </summary>
  56. public static void DeleteLocalFile(string filePath)
  57. {
  58. if (File.Exists(filePath)) File.Delete(filePath);
  59. }
  60. /// <summary>
  61. /// 本地是否包含文件
  62. /// </summary>
  63. public static bool LoaclIsContainFile(string filePath)
  64. {
  65. return File.Exists(filePath);
  66. }
  67. /// <summary>
  68. /// 通过WinForm获取上传文件路径
  69. /// </summary>
  70. /// <param name="extensions"></param>
  71. /// <returns></returns>
  72. public static string[] GetAssetPathsByWinForm(List<ExtensionFilter> extensions)
  73. {
  74. string[] paths = StandaloneFileBrowser.OpenFilePanel(" 上传文件", "", extensions.ToArray(), true);
  75. return paths;
  76. }
  77. /// <summary>
  78. /// 获取文件的创建时间
  79. /// </summary>
  80. /// <param name="filePath"></param>
  81. /// <returns></returns>
  82. public static DateTime GetFileCreateTime(string filePath)
  83. {
  84. return File.GetCreationTime(filePath);
  85. }
  86. /// <summary>
  87. /// 对比文件创建前后
  88. /// </summary>
  89. /// <param name="filePath1"></param>
  90. /// <param name="filePath2"></param>
  91. /// <returns>True为FilePath1靠前</returns>
  92. public static bool CompareBeforAndAfterCreateTime(string filePath1,string filePath2)
  93. {
  94. DateTime dateTime1 = GetFileCreateTime(filePath1);
  95. DateTime dateTime2 = GetFileCreateTime(filePath2);
  96. return dateTime1 > dateTime2;
  97. }
  98. /// <summary>
  99. /// 搜索指定条件的文件,并返回文件路径
  100. /// </summary>
  101. /// <param name="targetPath"></param>
  102. /// <param name="searchPattern"></param>
  103. /// <returns></returns>
  104. public static string[] SearchFilePaths(string targetPath,string searchPattern)
  105. {
  106. DirectoryInfo directoryInfo = new DirectoryInfo(targetPath);
  107. List<string> tmpFilePaths = new List<string>();
  108. if (!directoryInfo.Exists)
  109. {
  110. Debug.LogError(targetPath + "路径不存在!!!!");
  111. }else
  112. {
  113. FileInfo[] fileInfos = directoryInfo.GetFiles(searchPattern);
  114. foreach (var item in fileInfos)
  115. {
  116. tmpFilePaths.Add(item.FullName);
  117. }
  118. }
  119. return tmpFilePaths.ToArray();
  120. }
  121. }