Esempio n. 1
0
    public static void CreateFileList(string exportPath, string version)
    {
        ///----------------------创建文件列表-----------------------
        string filePath = exportPath + "/files.txt";

        if (File.Exists(filePath))
        {
            File.Delete(filePath);
        }
        string versionFilePath = Application.dataPath + "/../BuildABs" + "/version.txt";

        if (File.Exists(versionFilePath))
        {
            File.Delete(versionFilePath);
        }
        StringBuilder sb  = new StringBuilder();
        DirectoryInfo dir = new DirectoryInfo(exportPath);

        FileInfo[] files = dir.GetFiles("*", SearchOption.AllDirectories);
        for (int i = 0; i < files.Length; i++)
        {
            FileInfo file = files[i];
            if (file.Extension.Equals(".meta") || file.Extension.Equals(".DS_Store"))
            {
                continue;
            }

            string crc   = FileToCRC32.GetFileCRC32(file.FullName);
            string value = file.FullName.Replace(dir.FullName + "\\", string.Empty);
            sb.AppendLine(value + "|" + crc + "|" + file.Length);
        }
        File.WriteAllText(filePath, sb.ToString());
        File.WriteAllText(versionFilePath, version);
    }
Esempio n. 2
0
    /// <summary>
    /// 下载结束
    /// </summary>
    /// <param name="tmpSuccess">是否下载成功</param>
    void FinishDownload(bool tmpSuccess)
    {
        lock (this)
        {
            if (downLoadState != DownloadState.Loading)
            {
                return;
            }

            if (webResponse != null)
            {
                webResponse.Close();
            }
            if (responseStream != null)
            {
                responseStream.Close();
            }
            if (destStream != null)
            {
                destStream.Close();
            }

            var isVerifySuccess = true;
            if (tmpSuccess)
            {
                if (downLoadType == DownLoadType.CacheResumeFile)
                {
                    if (string.Empty != fileCRC)
                    {
                        var localCrc = FileToCRC32.GetFileCRC32(fileLocalCache);
                        if (localCrc == fileCRC)
                        {
                            FileUtils.MoveFile(fileLocalCache, savePath);
                            //Debug.Log(string.Format("Finish download success file {0}", fileName));
                        }
                        else
                        {
                            isVerifySuccess = false;
                            FileUtils.DelFile(fileLocalCache);
                            errorMsg = "crc verify failed";
                            Debug.LogWarning(string.Format("Finish download crc check failed {0}", fileName));
                        }
                    }
                    else
                    {
                        FileUtils.MoveFile(fileLocalCache, savePath);
                        Debug.Log(string.Format("Finish download success file {0}", fileName));
                    }
                }
            }
            else
            {
                Debug.LogError(string.Format("Finish download failed to download file:: {0},errorReason::{1}", fileName, errorMsg));
                Debug.LogError("=====load fail=======" + (url + fileName));
            }

            this.isSuccess = tmpSuccess && isVerifySuccess;
            downLoadState  = DownloadState.Finished;
        }
    }
Esempio n. 3
0
    static void AddConfInfo(FileList filelist)
    {
        if (filelist == null)
        {
            return;
        }

        string confFolder = string.Format("{0}/{1}", PackAssetBundle.bundleBuildFolder, ResourceConst.ConfFolder);

        string[] files = Directory.GetFiles(confFolder);
        foreach (string file in files)
        {
            string fileName = Path.GetFileName(file);


            string bundleName = string.Format("{0}/{1}", ResourceConst.ConfFolder, fileName);

            uint crc = FileToCRC32.GetFileCRC32Int(file);

            FileInfo fileInfo = new FileInfo(file);
            UInt32   size     = (UInt32)fileInfo.Length;
            string   md5      = MD5Utils.GetMD5(file);

            filelist.AddBundleInfo(bundleName, crc, size, md5);
        }
    }
Esempio n. 4
0
    private void CollectDownFile(string netFiles, string streamFiles)
    {
        mUpdateList.Clear();
        string[] perFiles = null;
        if (Directory.Exists(Paths.PersistentDataPath))
        {
            perFiles = Directory.GetFiles(Paths.PersistentDataPath, "*", SearchOption.AllDirectories);
        }
        string[] netFilesArr = netFiles.Split(new string[] { "\r\n" }, StringSplitOptions.None);

        for (int i = 0; i < netFilesArr.Length; i++)
        {
            if (string.IsNullOrEmpty(netFilesArr[i]))
            {
                continue;
            }
            string[]   fileArr = netFilesArr[i].Split('|');
            UpdateInfo info    = new UpdateInfo();
            string     netFile = fileArr[0].Replace("\\", "/");
            string     netCrc  = fileArr[1];
            string     netSize = fileArr[2];
            info.name = netFile;
            info.crc  = netCrc;
            info.size = int.Parse(netSize);
            bool isNewFile = true;
            if (perFiles != null && perFiles.Length > 0)
            {
                for (int j = 0; j < perFiles.Length; j++)
                {
                    string fileName = perFiles[j].Replace(Paths.PersistentDataPath, "").Replace("\\", "/");
                    if (netFile.Equals(fileName))
                    {
                        isNewFile = false;
                        if (!FileToCRC32.GetFileCRC32(perFiles[j]).Equals(netCrc))
                        {
                            mUpdateList.Add(info.name, info);
                        }
                    }
                }
            }
            else if (!string.IsNullOrEmpty(streamFiles))
            {
                string[] streamFilesArr = streamFiles.Split(new string[] { "\r\n" }, StringSplitOptions.None);
                for (int j = 0; j < streamFilesArr.Length; j++)
                {
                    if (string.IsNullOrEmpty(streamFilesArr[j]))
                    {
                        continue;
                    }
                    string[] sfileArr = streamFilesArr[i].Split('|');
                    if (sfileArr[0].Replace("\\", "/").Equals(netFile))
                    {
                        isNewFile = false;
                        if (!sfileArr[1].Equals(netCrc))
                        {
                            mUpdateList.Add(info.name, info);
                        }
                    }
                }
            }

            if (isNewFile)
            {
                mUpdateList.Add(info.name, info);
            }
        }
    }