Пример #1
0
    public static void GenerateStreamAssetsFileMd5Ver()
    {
        List <string> ret = FileUtils.GetAllFileFullPathsInStreamingAssets(Application.dataPath + "/StreamingAssets");

        Debug.Log(ret.ListToString());
        FileMd5DataDictionary dic = new FileMd5DataDictionary();
        int i = 1;

        foreach (var file in ret)
        {
            if (!file.Contains(".meta") && !file.Contains("FilesMd5"))
            {
                FileMd5Data data = new FileMd5Data();
                data.Id = i;
                int    spliteIndex = file.IndexOf("StreamingAssets") + "StreamingAssets".Length + 1;
                string subFileName = file.Substring(spliteIndex).Replace("\\", "/");
                data.FullPath = subFileName;

                spliteIndex = subFileName.LastIndexOf('.');
                subFileName = subFileName.Substring(0, spliteIndex);
                spliteIndex = subFileName.LastIndexOf('/');
                if (spliteIndex >= 0)
                {
                    subFileName = subFileName.Substring(spliteIndex + 1);
                }
                data.FileName = subFileName;
                if (data.FullPath.Contains(".dat"))
                {
                    data.FileName += ".dat";
                }

                data.Md5Code = FileUtils.GetMd5_Path(file);

                dic.AddData(data);
                i++;
            }
        }
        dic.UpdateMd5File(Application.dataPath + "/StreamingAssets/FilesMd5.csv");
    }
    void GetModifiedFiles(string md5filecontent, string newVerMd5filecontent)
    {
        _latestContent = newVerMd5filecontent;//缓存最新版Md5文件

        FileMd5DataDictionary newMd5DataDictionary = new FileMd5DataDictionary();

        newMd5DataDictionary.Parse(newVerMd5filecontent);

        if (!string.IsNullOrEmpty(md5filecontent))
        {
            FileMd5DataDictionary curMd5DataDictionary = new FileMd5DataDictionary();
            curMd5DataDictionary.Parse(md5filecontent);
            List <FileMd5Data> tempNewVers = newMd5DataDictionary.GetAllValues();
            foreach (var newVer in tempNewVers)
            {
                var oldVer = curMd5DataDictionary.Get(newVer.FileName);
                if (oldVer == null || oldVer.Md5Code != newVer.Md5Code)
                {
                    _latestFiles.Add(newVer);
                    ModifiedFiles++;
                }
            }
            List <FileMd5Data> temp = curMd5DataDictionary.GetAllValues();
            foreach (var item in temp)
            {
                if (!newMd5DataDictionary.ContainsKey(item.FileName))
                {
                    _deletedFiles.Add(item);
                    _deletedcount++;
                }
            }
        }
        else
        {
            ModifiedFiles = newMd5DataDictionary.Count;
            _latestFiles.AddRange(newMd5DataDictionary.GetAllValues());
        }
    }