FileVerifyHelper.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using System;
  2. using System.IO;
  3. namespace YooAsset
  4. {
  5. internal class FileVerifyHelper
  6. {
  7. /// <summary>
  8. /// 文件校验
  9. /// </summary>
  10. public static EFileVerifyResult FileVerify(string filePath, long fileSize, string fileCRC, EFileVerifyLevel verifyLevel)
  11. {
  12. try
  13. {
  14. if (File.Exists(filePath) == false)
  15. return EFileVerifyResult.DataFileNotExisted;
  16. // 先验证文件大小
  17. long size = FileUtility.GetFileSize(filePath);
  18. if (size < fileSize)
  19. return EFileVerifyResult.FileNotComplete;
  20. else if (size > fileSize)
  21. return EFileVerifyResult.FileOverflow;
  22. // 再验证文件CRC
  23. if (verifyLevel == EFileVerifyLevel.High)
  24. {
  25. string crc = HashUtility.FileCRC32(filePath);
  26. if (crc == fileCRC)
  27. return EFileVerifyResult.Succeed;
  28. else
  29. return EFileVerifyResult.FileCrcError;
  30. }
  31. else
  32. {
  33. return EFileVerifyResult.Succeed;
  34. }
  35. }
  36. catch (Exception)
  37. {
  38. return EFileVerifyResult.Exception;
  39. }
  40. }
  41. }
  42. }