当前位置: 首页 > article >正文

Unity 读取文本文档 方法总结

如题,我写一个测试的文本文档吧

来看一下总结出来的思路

除了textasset常用resources加载textasset类型之外

 其他方式皆可读取unity内特定文件和项目外文件,有些还可以向文件写入内容

 

非文件流

1.TextAsset (可以依赖Resources路径,只读)

Unity - 脚本 API:TextAsset

这是Unity提供的读取原始文本和二进制的一个类,使用起来也非常的方便

如果你不知道什么是Resources,请参考这篇文章

Unity数据持久化 万物之源Resources动态资源加载_unity 动态加载资源-CSDN博客

 简单的演示代码

    // Start is called before the first frame update
    void Start()
    {
        TextAsset str = Resources.Load<TextAsset>("Test");
        if(str!=null){
            Debug.Log(str.text);
        }else{
            Debug.LogError("未加载到文件");
        }
    }

 2.File(System.IO 读取项目外文件,可读可写)

        注意这种方法,读取文件路径要双斜杠,原因是 转义字符+再转义 = 原字符 这个规则

 string testPath = "C:\\Users\\Nharker\\Desktop\\Test.txt";
 if (File.Exists(testPath)){
     Debug.Log(testPath);
    string str = File.ReadAllText(testPath);
    Debug.Log(str);
 }

        

3. Application.persistentDataPath(可读可写)

        这个就不做演示了,就是把File的路径改为这个就行了,但是我要说一句这个路径根据不同平台有所出入,所以不是绝对的,具体请查看官方文档Application-persistentDataPath - Unity 脚本 API

文件流

1.字符流读取外部文件(System.IO 可读可写)

FileStream 通常用于二进制文件读取,当然也可以读字符串

  string testPath = "C:\\Users\\Nharker\\Desktop\\Test.txt";
  using (FileStream fs = new FileStream(testPath, FileMode.Open)) {
      byte[] chars =new byte[fs.Length];
      fs.Read(chars, 0, chars.Length);//参数: 读取到哪个数组 , 从第几位开始 ,读取多长的字节
      string str =System.Text.Encoding.UTF8.GetString(chars);
      Debug.Log(str);
  } 

StreamReader

   using (StreamReader reader = new StreamReader(testPath)) {
       string line;
       while ((line = reader.ReadLine()) != null) {
           Debug.Log(line);
       }
   }


        StreamWriter

   using (StreamWriter writer = new StreamWriter(writePath))
        {
            writer.Write(content);
        }

这个就是C#提供的写入文件的api,我认为不如FileStream 只需要修改filemode 然后调用fs.wrte的api即可

二者区别

2. 文件流读取 但是依赖StreamingAssets(只读)

           众所周知,StreamingAssets是unity的一个只读的路径,可以在其中存放文件流

   

            有疑问请自行查看官方文档,Application-streamingAssetsPath - Unity 脚本 API

   using (FileStream fs = File.Open(Application.streamingAssetsPath + "/Test.txt", FileMode.Open)) {
       byte[] chars = new byte[fs.Length];
       fs.Read(chars, 0, chars.Length);
       string str = System.Text.Encoding.UTF8.GetString(chars);
       Debug.Log(str);
   }

 using (StreamReader reader = new StreamReader(Application.streamingAssetsPath + "/Test.txt")) {
     string result = reader.ReadToEnd();
     Debug.Log(result);
 }

     

        


http://www.kler.cn/a/387371.html

相关文章:

  • PHP 字符串
  • [读书日志]8051软核处理器设计实战(基于FPGA)第七篇:8051软核处理器的测试(verilog+C)
  • IOS界面传值-OC
  • MMDetection框架下的常见目标检测与分割模型综述与实践指南
  • 金融项目实战 06|Python实现接口自动化——日志、认证开户接口
  • FastDDS安装测试记录
  • mtk Android7定制修改
  • Ascend Extension for PyTorch的源码解析
  • WPF自定义翻页控件
  • 简单的TCP程序
  • RK3568笔记1:BootRom
  • 【Linux 29】传输层协议 - UDP
  • 28-在CARLA包中获取地图
  • vue之vant上传图片
  • 数据结构-归并排序笔记
  • Java 连接操作 MySQL 数据库(增删查改操作)
  • 文献阅读 | Nature Methods:使用 STAMP 对空间转录组进行可解释的空间感知降维
  • LLMs在供应链投毒检测中的应用
  • 植物明星大乱斗1
  • 利用AI工具进行论文数据收集
  • 了解GPT大模型,读这本书就够了!(文末送书)
  • 【模块化大作战】Webpack如何搞定CommonJS与ES6混战(1-3)
  • 【网络】深入理解 HTTPS:确保数据传输安全的核心协议
  • 今天要重新认识下注解@RequestBody
  • IDEA构建JavaWeb项目,并通过Tomcat成功运行
  • 【快速入门】Kafka的安装部署