Unity3D《一看就明白系列》之读取Txt (一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37067895/article/details/85344314

策划写Excel  ---> 程序解析Excel为Text(letter) --->程序读取Txt

文件路径:

Appliction.dataPath 项目资源路径

Application.streamingAssetsPath 

PC:项目资源路径下的streamingAssets文件夹(需要手动创建同名文件夹)“这个目录只能用WWW读取(PC特例也可以用文件读取去读(FileStream)),且不能修改(PC可以修改)”

Android:安装在一个assets文件夹

如果想要把一些程序随文件打包到,即在手机端可以查看,则应该它们放到这一个目录之下。

IOS:Doucment/app

Application.persistentDataPath:

可读可写文件目录 

在不同的平台上这个路径是不一样的

文档操作流程:

  1. 找到目录

  2. 打开

  3. 读写

  4. 关闭

void Start()

    {

        //找到文件目录

        string path = Application.streamingAssetsPath + "/configer.ll";

        //打开文件

        StreamReader tmpReader = new StreamReader(path);

        //开始读取 "一行行的读"

        string line = tmpReader.ReadLine();

        Debug.Log("line=" + line);

        //查看有多少行

        int lineCount = int.Parse(line);

        for (int i = 0; i < lineCount; i++)

        {

            string tmpLine= tmpReader.ReadLine();

            Debug.Log("第" + i + "条数据为:" + tmpLine);

        }

    }

现在丰富文本内容

这样也能读取一行的内容,但是需要切割(读取字符串)

/// <summary>

    /// 对Txt进行读取操作

    /// </summary>

    public void ReadStream()

    {

        //找到文件目录

        string path = Application.streamingAssetsPath + "/configer.ll";

        //打开文件

        StreamReader tmpReader = new StreamReader(path);

        //开始读取 "一行行的读"

        string line = tmpReader.ReadLine();

        //Debug.Log("line=" + line);

        //查看有多少行

        int lineCount = int.Parse(line);

        string tmpLine;

        string[] tmpArray;

        for (int i = 0; i < lineCount; i++)

        {

            tmpLine = tmpReader.ReadLine();

            // Debug.Log("第" + i + "条数据为:" + tmpLine);

            tmpArray = tmpLine.Split(' ');

            //for (int j = 0; j < tmpArray.Length; j++)

            //{

            //    Debug.Log("切割后第" + i + "条数据的第" + j + "个数据元素为" +  tmpArray[j]);

            //}

            PlayerPrefs.SetString(tmpArray[0], tmpArray[1]);

        }

        tmpReader.Close();

    }

现在开始写入数据(这种写入方式比较简单,弊端在于后面写入的内容会完全覆盖之前的内容)

  /// <summary>

    /// 对Txt进行写入操作

    /// </summary>

    public void WriteStream()

    {

        //找到目录

        string path = Application.streamingAssetsPath + "/configer.ll";

        //打开文件

        StreamWriter tmpWrite = new StreamWriter(path);

        //进行写入操作

        tmpWrite.WriteLine("88888888");

        tmpWrite.WriteLine("admin 123");

        //关闭

        tmpWrite.Close();

    }

FileStream 读写的是字节流

/// <summary>

    /// 利用文件的方式对Txt进行读取操作

    /// </summary>

    public void FileWriteStream()

    {

        //找到目录

        string path = Application.streamingAssetsPath + "/configer.ll";

        //打开文件

        FileStream tmpFileStream = new FileStream(path, FileMode.OpenOrCreate);

        //将光标跳到从起点开始偏移两个位置

        tmpFileStream.Seek(2, SeekOrigin.Begin);

        //写入一个字节流

        tmpFileStream.WriteByte(12);

        //再写入一个

        tmpFileStream.WriteByte(34);

        //关闭文件读取

        tmpFileStream.Close();

    }

解决这个写入小bug,刚才写入的是字节流,我们需要把它们转化为可以识别的字符串

/// <summary>

    /// 将Txt中的字节流转化为可以识别的内容

    /// </summary>

    public void ReadByte()

    {

        //找到目录

        string path = Application.streamingAssetsPath + "/configer.ll";

        //打开文件

        FileStream tmpFileStream = new FileStream(path, FileMode.OpenOrCreate);

        //将光标跳到从起点开始偏移两个位置

        tmpFileStream.Seek(2, SeekOrigin.Begin);

        int tmpOne = tmpFileStream.ReadByte();

        Debug.Log("第一次读取的内容:" + tmpOne);

        int tmpTwo = tmpFileStream.ReadByte();

        Debug.Log("第二次读取的内容:" + tmpTwo);

        tmpFileStream.Close();

    }

总之:一般就是进行读操作,除了第一次将Excel转化为Txt除外,如果要改数据就直接对配置文件进行修改

猜你喜欢

转载自blog.csdn.net/qq_37067895/article/details/85344314
今日推荐