Unity读取解析本地txt,xml,json文件

前言

本次解析所有文件的方法只在PC端下执行有效!!!

一,读取解析本地txt文件

现在桌面新建一个txt文本,内容写自己想要加载的,这边以用户名和密码举例:

新建完成后,保存为UTF_8格式:

 

 然后再Assets下新建一个StreamingAssets文件,此文件夹打包的时候会一起打包到外部,可用来做外部可配置文件,将创建的txt文本放在该文件夹中:

然后在unity中新建一个解析txt文本的脚本:

    /// <summary>
    /// 读取TXT
    /// </summary>
    void TxtUserData()
    {
        string path = Application.streamingAssetsPath + "/userdata.txt";

        //----------直读-------------
        //WWW www = new WWW(path);
        //string strFile = www.text;

        //---------逐行读取----------
        string[] userStr = File.ReadAllLines(path);

        for (int i = 0; i < userStr.Length; i++)
        {
            string[] keyValue = userStr[i].Split('%'); //分割名字和密码
            txtDic.Add(keyValue[0], keyValue[1]); 
        }

        //---------------
        foreach (var item in txtDic)
        {
            Debug.Log("名字:" + item.Key + "  密码:" + item.Value);
        }
    }

建一个字典类用来存放读取txt文件内容:

最后打印结果:

 二,读取解析本地xml文件

新建xml文件和内容步骤如上,不会建xml内容的自行百度;将新建好的xml文件放在StreamingAssets下:

 然后在unity中新建一个读取解析xml文件的脚本。

先建一个字典用来存放读取的内容:

 

    /// <summary>
    /// 读取XML
    /// </summary>
    void XmlUserData()
    {
        string path = Application.streamingAssetsPath + "/userdata.xml";
        List<string> username = new List<string>();
        List<string> password = new List<string>();

        if (File.Exists(path))
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(path);
            XmlNodeList node = xmlDoc.SelectSingleNode("item").ChildNodes;

            //遍历节点
            foreach (XmlElement x in node)
            {
                switch (x.Name)
                {
                    case "data1":
                        foreach (XmlElement data1 in x.ChildNodes)
                        {
                            switch (data1.Name)
                            {
                                case "username":
                                    username.Add(data1.InnerText);
                                    break;
                                case "password":
                                    password.Add(data1.InnerText);
                                    break;
                                default:
                                    break;
                            }
                        }
                        break;
                    case "data2":
                        foreach (XmlElement data2 in x.ChildNodes)
                        {
                            switch (data2.Name)
                            {
                                case "username":
                                    username.Add(data2.InnerText);
                                    break;
                                case "password":
                                    password.Add(data2.InnerText);
                                    break;
                                default:
                                    break;
                            }
                        }
                        break;
                    case "data3":
                        foreach (XmlElement data3 in x.ChildNodes)
                        {
                            switch (data3.Name)
                            {
                                case "username":
                                    username.Add(data3.InnerText);
                                    break;
                                case "password":
                                    password.Add(data3.InnerText);
                                    break;
                                default:
                                    break;
                            }
                        }
                        break;
                    default:
                        break;
                }
            }

            for (int i = 0; i < username.Count; i++)
            {
                xmlDic.Add(username[i], password[i]);
            }
        }

        //---------------
        foreach (var item in xmlDic)
        {
            Debug.Log("名字:" + item.Key + "  密码:" + item.Value);
        }
    }

打印结果:

三,读取解析本地json文件

 解析json文件前先要准备一个LitJson.dll文件,放到Plugins文件夹下。

LitJson.dll下载地址:https://download.csdn.net/download/ThreePointsHeat/12821949

然后在桌面创建json文件,保存格式依旧为UTF—8,内容如下:

 将创建好的json文件放在StreamingAssets文件夹下,在unity工程下创建读取解析json的脚本,读取解析json文件需要引用LitJson:

/// <summary>
    /// 读取JSON
    /// </summary>
    void JsonUserData()
    {
        string Path = Application.streamingAssetsPath + "/userdata.json";
        
        if(File.Exists(Path))
        {
            StreamReader streamreader = new StreamReader(Path);
            string str = streamreader.ReadToEnd();
            JsonData jarr = JsonMapper.ToObject(str);
            if(jarr.IsArray)
            {
                for (int i = 0; i < jarr.Count; i++)
                {
                    JsonData jd = jarr[i]["UserData"];
                    for (int j = 0; j < jd.Count; j++)
                    {
                        //Debug.Log(jd[j]["username"] + "\n" + jd[j]["password"]);
                        jsonDic.Add(jd[j]["username"].ToString(), jd[j]["password"].ToString());
                    }
                }
            }
        }
        else
        {
            Debug.LogError("文件不存在!");
        }

        //---------------
        foreach (var item in jsonDic)
        {
            Debug.Log("名字:" + item.Key + "  密码:" + item.Value);
        }
    }

新建一个字典用来存读取的内容:

打印结果:

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值