Unity 保存Json数据到本地文件

来源:互联网 发布:大学蹭课软件 编辑:程序博客网 时间:2024/05/16 07:36

一、先导入Json 解析库;

下载地址:http://download.csdn.net/detail/u014076894/9606309


二、开始代码的编写;

//命名空间using System.IO;using System.Collections.Generic;using LitJson;

//相关变量声明:    private static string mFolderName;    private static string mFileName;    private static Dictionary<string, string> Dic_Value = new Dictionary<string, string>();    private static string FileName {        get {            return Path.Combine(FolderName, mFileName);        }    }    private static string FolderName {        get {            return Path.Combine(Application.persistentDataPath, mFolderName);        }    }

//初始化方法 如有需要,可重载初始化方法    public static void Init(string pFolderName, string pFileName) {        mFolderName = pFolderName;        mFileName = pFileName;        Dic_Value.Clear();        Read();    }

//读取文件及json数据加载到Dictionary中    private static void Read() {        if(!Directory.Exists(FolderName)) {            Directory.CreateDirectory(FolderName);        }        if(File.Exists(FileName)) {            FileStream fs = new FileStream(FileName, FileMode.Open);            StreamReader sr = new StreamReader(fs);            JsonData values = JsonMapper.ToObject(sr.ReadToEnd());            foreach(var key in values.Keys) {                Dic_Value.Add(key, values[key].ToString());            }            if(fs != null) {                fs.Close();            }            if(sr != null) {                sr.Close();            }        }    }

//将Dictionary数据转成json保存到本地文件    private static void Save() {        string values = JsonMapper.ToJson(Dic_Value);        Debug.Log(values);        if(!Directory.Exists(FolderName)) {            Directory.CreateDirectory(FolderName);        }        FileStream file = new FileStream(FileName, FileMode.Create);        byte[] bts = System.Text.Encoding.UTF8.GetBytes(values);        file.Write(bts,0,bts.Length);        if(file != null) {            file.Close();        }    }

到此,简单的保存方法基本完成了。

三、举例使用;

拿读写字符串为例:

//判断当前是否存在该key值    public static bool HasKey(string pKey) {        return Dic_Value.ContainsKey(pKey);    }

//读取string值    public static string GetString(string pKey) {        if(HasKey(pKey)) {            return Dic_Value[pKey];        } else {            return string.Empty;        }    }

//保存string值    public static void SetString(string pKey, string pValue) {        if(HasKey(pKey)) {            Dic_Value[pKey] = pValue;        } else {            Dic_Value.Add(pKey, pValue);        }        Save();    }

如有雷同,纯属巧合!
如有不足,欢迎指正!

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 支付宝实名认证刷脸失败怎么办 支付宝注册刷脸不是本人怎么办 小学科学只考88分中学怎么办 收银机关机时才上传数据是怎么办 刚做的系统玩cf卡屏怎么办 办健康证的资料掉了怎么办 刚刚办得的健康证掉了怎么办 房子都过户了银行贷不了款怎么办 我要办大病迁出应该怎么办啊? 遗产继承后户口没地迁出怎么办 安徽蒙城怎么办去韩国的签证的 夜间有人私自收停车费应该怎么办 上次摸不到环尾丝这次摸到了怎么办 法院判决书下来后对方不给钱怎么办 法院判决书下来了钱还保全么怎么办 深圳路边泊车不知道泊车编号怎么办 当事人进拘留所了我的工资怎么办 昆明公租房住满5年后怎么办 昆明公租房房子到期缴纳金怎么办 看守所犯人银行卡里钱没用完怎么办 中国邮政迟迟没有把信件寄到怎么办 拘留15天放出来还不肯还钱怎么办 人死在拘留所不让看监控怎么办 家人吸毒可他又不愿强戒怎么办 容留他人吸毒时签了强戒怎么办 拘留后发现被拘留是人大代表怎么办 执行局要拘留人找不到人怎么办 开设赌场罪拘留37天了该怎么办 对治安处罚光罚款不拘留怎么办 打架和解后警察不给消案怎么办 12个人片诈骗刑拘了28天怎么办 交警拘留几天后还是没钱赔偿怎么办 平安车主信用卡车牌号填错了怎么办 起诉借钱的人逮起来了怎么办 在法院查不到坐牢人的档案怎么办 人被冤枉敲诈勒索进看守所了怎么办 打架被拘留孩子怎么办三周了 技师被拘留她的家人该怎么办 我是担保人贷款人跑了我该怎么办 公司依旷工理由辞退我该怎么办 试工两天被辞退了不发工资怎么办