写了一个简单的例子,传入指定文件夹,会给该文件夹下的文件生成对应的MD5,然后将信息转换成Json存储到本地;
注意,文件夹下如果有子文件夹(及多层目录),没有做处理;
using System.Collections;
using System.Collections.Generic;
using System.Security.Cryptography;
using UnityEngine;
using UnityEngine.Networking;
using System.IO;
using UnityEngine.UI;
using System.Text;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
//数据结构
[System.Serializable]
public struct Md5Info
{
public string name;
public string md5;
public Md5Info(string n,string m)
{
name = n;
md5 = m;
}
}
[System.Serializable]
public class MD5InfoData
{
public List<Md5Info> md5Info = new List<Md5Info>();
public static void SaveData(string path, MD5InfoData data)
{
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None);
formatter.Serialize(stream, data);
stream.Close();
string cfgJson = JsonUtility.ToJson(data, true);
File.WriteAllText(path, cfgJson);
}
public static MD5InfoData GetMD5Data(string path)
{
string text = File.ReadAllText(path);
MD5InfoData info = JsonUtility.FromJson<MD5InfoData>(text);
return info;
}
}
public class MD5Test : MonoBehaviour
{
public void CreateResFileMd5(string path)
{
MD5InfoData fmd5 = new MD5InfoData();
DirectoryInfo root = new DirectoryInfo(path);
FileInfo[] files = root.GetFiles("*", SearchOption.AllDirectories);
foreach (var f in files)
{
//排除.meta文件
if