| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 | 
							- using System;
 
- using System.Collections;
 
- using System.Collections.Generic;
 
- using System.IO;
 
- using System.Security.Cryptography;
 
- using System.Text;
 
- using System.Threading;
 
- using hirdParty.DownloadSystem;
 
- using ThirdParty.DownloadSystem;
 
- using UnityEngine;
 
- public class CheckFileThran
 
- {
 
-     private Thread _thread;
 
-     private string rootPath;
 
-     public List<MD5FileInfo> shiBaiFile = new List<MD5FileInfo>();
 
-     public int count;
 
-     public bool isEnd;
 
-     public CheckFilePool CheckFilePool;
 
-     public System.Action OnClick;
 
-     public void Start(string dPath, CheckFilePool CheckFilePool)
 
-     {
 
-         this.CheckFilePool = CheckFilePool;
 
-         this.rootPath = dPath;
 
-         _thread = new Thread(UpdateThread);
 
-         _thread.Start();
 
-         shiBaiFile.Clear();
 
-     }
 
-     public void Close()
 
-     {
 
-         _thread = null;
 
-         OnClick = null;
 
-     }
 
-     private void UpdateThread()
 
-     {
 
-         while (_thread != null)
 
-         {
 
-             // for (int i = 0; i < md5FileInfos.Count; i++)
 
-             {
 
-                 if (_thread == null)
 
-                 {
 
-                     break;
 
-                 }
 
-                 try
 
-                 {
 
-                     MD5FileInfo bdMd5File = null;
 
-                     lock (CheckFilePool.CheckFile)
 
-                     {
 
-                         if (CheckFilePool.CheckFile.Count > 0)
 
-                         {
 
-                             bdMd5File = CheckFilePool.CheckFile[0];
 
-                             CheckFilePool.CheckFile.Remove(bdMd5File);
 
-                         }
 
-                     }
 
-                     if (bdMd5File == null)
 
-                     {
 
-                         break;
 
-                     }
 
-                     if (bdMd5File.size <= 0)
 
-                     {
 
-                         continue;
 
-                     }
 
-                     if (bdMd5File.fileName.Contains("MD5"))
 
-                     {
 
-                         continue;
 
-                     }
 
-                     count++;
 
-                     string dPath = rootPath + bdMd5File.fileName;
 
-                     if (!File.Exists(dPath))
 
-                     {
 
-                         // Debug.Log("文件不纯在"+ dPath);
 
-                         shiBaiFile.Add(bdMd5File);
 
-                     }
 
-                     else
 
-                     {
 
-                         string md5 = FileMD5(dPath);
 
-                         if (!bdMd5File.md5.Equals(md5))
 
-                         {
 
-                             Debug.Log("MD5校验失败" + dPath);
 
-                             shiBaiFile.Add(bdMd5File);
 
-                         }
 
-                     }
 
-                     Thread.Sleep(1);
 
-                 }
 
-                 catch (Exception e)
 
-                 {
 
-                     Debug.LogError("MD5校验失败" + e);
 
-                 }
 
-             }
 
-         }
 
-         isEnd = true;
 
-         OnClick?.Invoke();
 
-     }
 
-     public static string FileMD5(string filePath)
 
-     {
 
-         byte[] retVal;
 
-         using (FileStream file = new FileStream(filePath, FileMode.Open))
 
-         {
 
-             MD5 md5 = new MD5CryptoServiceProvider();
 
-             retVal = md5.ComputeHash(file);
 
-         }
 
-         return ByteArrayToString(retVal);
 
-     }
 
-     public static string ByteArrayToString(byte[] ba)
 
-     {
 
-         StringBuilder hex = new StringBuilder(ba.Length * 2);
 
-         foreach (byte b in ba)
 
-         {
 
-             hex.AppendFormat("{0:x2}", b);
 
-         }
 
-         return hex.ToString();
 
-     }
 
-     public string GetMD5HashFromFile(byte[] data)
 
-     {
 
-         try
 
-         {
 
-             // FileStream file = new FileStream(filename,FileMode.Open);
 
-             System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
 
-             byte[] retVal = md5.ComputeHash(data);
 
-             // StringBuilder sb = new StringBuilder();
 
-             StringBuilder hex = new StringBuilder(retVal.Length * 2);
 
-             foreach (byte b in retVal)
 
-             {
 
-                 hex.AppendFormat("{0:x2}", b);
 
-             }
 
-             return retVal.ToString();
 
-         }
 
-         catch (System.Exception ex)
 
-         {
 
-             Debug.Log("错误信息:" + ex);
 
-             return null;
 
-         }
 
-     }
 
- }
 
 
  |