Unity本地文件IO

作者: Michaelbest1 | 来源:发表于2017-12-21 11:21 被阅读36次
    PC/iOS文件目录兼容

    做Unity开发的时候,很多时候都需要写本地文件。文件IO本来是个简单的东西,C#库已经封装得很好了。但是如果要牵扯到跨平台,就会有点麻烦。
    比如iOS上,每一个app只能读写自己沙盒里的文件。甚至有的目录是只读的。前两天就遇到了这个坑。
    一开始我没有做跨平台处理,文件目录直接用Application.DataPath。结果在模拟器里调试的时候会有错误日志,显示不能写某文件。
    仔细查阅了一下Unity官方文档,才发现原来要用Application.persistentDataPath才可以。

        private static string getPlatformPath(string filename)
        {
            if (Application.platform == RuntimePlatform.IPhonePlayer) {
                return Path.Combine(Application.persistentDataPath, filename);
            }
            return Application.dataPath + "/Resources/Data/" + filename;
        }
    

    这边我只处理了iOS的。其它平台因为暂时不需要处理所以就不管了。
    还要注意最好用Path.Combine,因为不同平台的目录分隔符有所不同。

    文件打开

    打开文件的时候,如果需要在文件不存在的时候创建文件,需要这样:

    FileStream fs = new FileStream(fullpath, FileMode.OpenOrCreate, FileAccess.Read);
    StreamReader reader = new StreamReader(fs);
    

    我一开始的时候没有用FileStream,直接用的StreamReader。但直接用StreamReader是不能实现这个功能的,于是想起来Java里IO流decorator式的设计,C#的应该也是差不多的。查了一下文档果然是这样。基础还是很重要的呀!

    相关文章

      网友评论

        本文标题:Unity本地文件IO

        本文链接:https://www.haomeiwen.com/subject/jowowxtx.html