对文件生成MD5文件配置表

开发目的:

    用于游戏开发热更新中对于游戏文件的版本比对

    使用.net core (vs2019)

 

class Program
    {
        static string currentVersion = "1.0";
        static void Main(string[] args)
        {
            Console.WriteLine("Start");

            string path = System.Environment.CurrentDirectory + @"\xxupdate";
            Console.WriteLine(path);

            //读取本地所有文件
            List<string> fileList = GetDicFiles(path);
            //生成对应md5
            List<string> configList = new List<string>();
            foreach (var file in fileList)
            {
                FileStream fs = new FileStream(Environment.CurrentDirectory + "/" + file, FileMode.Open);
                string md5 = GenerateMD5(fs);
                string configstr = file + "," + md5;
                Console.WriteLine(configstr);
                configList.Add(configstr);
                fs.Close();
            }
            string configPath = Environment.CurrentDirectory + @"\UpdateConfig.csv";
            File.Delete(configPath);
            //写入配置文件
            StreamWriter sw = new System.IO.StreamWriter(configPath, true);
            sw.WriteLine("v," + currentVersion);
            foreach (var cstr in configList)
            {
                sw.WriteLine(cstr);// 直接追加文件末尾,换行 
            }

            sw.Close();
            Console.WriteLine("完成!");
            Console.ReadLine();
        }
        //获取所有文件名
        static List<string> GetDicFiles(string path)
        {
            List<string> nameList = new List<string>();
            DirectoryInfo dir = new DirectoryInfo(path);
            FileInfo[] fileArray = dir.GetFiles();
            string oldpath = Environment.CurrentDirectory + "\\";
            foreach (var file in fileArray)
            {
                string configPath = file.FullName;
                nameList.Add(configPath.Replace(oldpath, ""));
            }
            DirectoryInfo[] dirs = dir.GetDirectories();
            foreach (var childDic in dirs)
            {
                nameList.AddRange(GetDicFiles(childDic.FullName));
            }

            return nameList;
        }
        //md5
        public static string GenerateMD5(Stream inputStream)
        {
            using (MD5 mi = MD5.Create())
            {
                //开始加密
                byte[] newBuffer = mi.ComputeHash(inputStream);
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < newBuffer.Length; i++)
                {
                    sb.Append(newBuffer[i].ToString("x2"));
                }
                return sb.ToString();
            }
        }

输出:

代码很简单,使用说明如下:

1.在运行目录下 建一个 xxupdate文件夹 

2.然后将需要更新文件放进去

3.执行exe

4.会生成对应的csv文件(path,md5)

5.第一行会有一个大版本号,用于强制更新

gitee地址

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值