Unity3D对TXT文件的操作

news2024/12/23 23:41:49

系列文章目录

Unity工具


文章目录

  • 系列文章目录
  • 前言
  • 一、读取txt文档
    • 1-1、TextAsset类读取
    • 1-2、代码实现
    • 1-2、打印结果
  • 二、使用File类读取
    • 2-1.使用ReadAllText读取代码如下:
    • 2-2、结果如下
    • 2-3、使用ReadAllLines读取代码如下:
    • 2-4、读取结果
  • 三、文件流读取文档
    • 3-1、使用FileStream类读取代码如下:
    • 3-2、结果如下
    • 3-3、File类的OpenRead()读取文档代码如下:
    • 3-4、结果如下
  • 四、以流形式读取文档
    • 4-1、使用StreamReader类读取代码如下:
    • 4-2、结果如下
    • 4-3、使用File类的OpenText()流形式读取代码如下:
    • 4-4、结果如下
  • 五、写入数据文档
    • 5-1、通过File类写入数据
    • 5-2、WriteAllText 全部写入 代码如下:
    • 5-3、WriteAllLines 一行一行写入代码如下:
    • 5-4、结果如下
  • 六、通过文件流的形式写入
    • 6-1、使用FileStream写入代码如下
    • 6-2、结果如下
  • 七、使用流形式写入数据
    • 7-1、使用StreamWriter写入代码如下:
    • 7-2、WriteLine结果如下
    • 7-3、Write结果如下
  • 总结


前言

大家好,我是心疼你的一切,会不定时更新Unity开发技巧,觉得有用记得一键三连哦。
在开发中会遇到各种文件类型,这次是txt文件类型,简单记录一下,方便以后使用


读取txt有好几种方式,有File类、FileStream类、StreamReader类、StreamWriter类
读取txt的类很多,读取的形式也很多,有的整篇读取,有的一行一行读取。按需使用

一、读取txt文档

1-1、TextAsset类读取

新建一个文本文档测试Datatxt.txt
切记要设置编码格式为UTF-8格式
在这里插入图片描述
要不然中文会乱码
使用这个类读取的文件,文件不能放在StreamingAssets文件夹里,要不然无法拖拽到脚本上面
文本内容如下
在这里插入图片描述

1-2、代码实现

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TextAssetsRead : MonoBehaviour
{
    public TextAsset text; 
    // Start is called before the first frame update
    void Start()
    {
        Debug.Log(text.text);
    }
}

1-2、打印结果

在这里插入图片描述
可以全部打印出来,读取所有内容

二、使用File类读取

2-1.使用ReadAllText读取代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
public class File_ReadAllText : MonoBehaviour
{
    public string path=Application.streamingAssetsPath ;
    // Start is called before the first frame update
    void Start()
    {
        string strtext = File.ReadAllText(path + "/Datatxt.txt");
        Debug.Log(strtext);
    } 
}

2-2、结果如下

在这里插入图片描述
这也是全部读取内容

2-3、使用ReadAllLines读取代码如下:

using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;

public class File_ReadAllLines : MonoBehaviour
{
    public string path = Application.streamingAssetsPath;
    // Start is called before the first frame update
    void Start()
    {
        string[]strtext = File.ReadAllLines(path + "/Datatxt.txt");
       
        foreach (var item in strtext)
        {
            Debug.Log(item );
        }
    }
}

2-4、读取结果

在这里插入图片描述
以上两个都可以设置格式打开文档 Encoding设置格式
在这里插入图片描述

三、文件流读取文档

3-1、使用FileStream类读取代码如下:

文件流形式读取文档

using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Text;
using UnityEngine;

public class FileStream_Read : MonoBehaviour
{
    public string path = Application.streamingAssetsPath;
    // Start is called before the first frame update
    void Start()
    {
        //文件流形式读取文档
        using (FileStream fs = new FileStream(path + "/Datatxt.txt", FileMode.Open, FileAccess.Read))
        {
            byte[] bytes = new byte[fs.Length];
            fs.Read(bytes, 0, bytes.Length);
            fs.Close();
            string str = Encoding.UTF8.GetString(bytes);
            Debug.Log(str);
        }
    }
}

3-2、结果如下

在这里插入图片描述

3-3、File类的OpenRead()读取文档代码如下:

using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Text;
using UnityEngine;

public class File_OpenRead : MonoBehaviour
{
    public string path = Application.streamingAssetsPath;
    // Start is called before the first frame update
    void Start()
    {
        //文件流形式读取文档
        using (FileStream fs = File.OpenRead(path + "/Datatxt.txt"))
        {
            byte[] bytes = new byte[fs.Length];
            fs.Read(bytes, 0, bytes.Length);
            fs.Close();
            string str = Encoding.UTF8.GetString(bytes);
            Debug.Log(str);
        }
    }
}

3-4、结果如下

在这里插入图片描述
上面两种结果都是一样的,差别有一点点

四、以流形式读取文档

4-1、使用StreamReader类读取代码如下:

using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Text;
using UnityEngine;

public class StreamReader_Read : MonoBehaviour
{
    public string path = Application.streamingAssetsPath;
    // Start is called before the first frame update
    void Start()
    {
        //流形式读取文档
        using (StreamReader sr = new StreamReader(path + "/Datatxt.txt"))
        {
            string strs = sr.ReadToEnd();
            sr.Close();
            sr.Dispose();
            Debug.Log(strs);
        }
    }
}

4-2、结果如下

在这里插入图片描述

4-3、使用File类的OpenText()流形式读取代码如下:

using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;

public class File_OpenText : MonoBehaviour
{
    public string path = Application.streamingAssetsPath;
    // Start is called before the first frame update
    void Start()
    {
        //流形式读取文档
        using (StreamReader sr = File.OpenText(path + "/Datatxt.txt"))
        {
            string strs = sr.ReadToEnd();
            sr.Close();
            sr.Dispose();
            Debug.Log(strs);

        }
    }
}

4-4、结果如下

在这里插入图片描述
结果一样的,差别也是有的,但不多

五、写入数据文档

5-1、通过File类写入数据

上面用:File.ReadAllText 和 File.ReadAllLines读取的
写入用: File.WriteAllText 和 File.WriteAllLines 写入的

5-2、WriteAllText 全部写入 代码如下:

using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
public class File_WriteAllText : MonoBehaviour
{
    public string path = Application.streamingAssetsPath;
    // Start is called before the first frame update
    void Start()
    {
        //File类写入文档
        File.WriteAllText(path+ "/Datatxt.txt", "测试测试测试测试测试测试测试测试测试测试");
    }
}

结果如下
在这里插入图片描述

5-3、WriteAllLines 一行一行写入代码如下:

using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;

public class File_WriteAllLines : MonoBehaviour
{
    public string path = Application.streamingAssetsPath;
    // Start is called before the first frame update
    void Start()
    {
        //File类写入文档
        string[] strs = { "测试数据1", "测试数据2", "测试数据3", "测试数据4", "测试数据5" };
        File.WriteAllLines(path + "/Datatxt.txt", strs);
    }
}

5-4、结果如下

在这里插入图片描述
最后好像会写入一行空的,不过不影响,读取的时候判断一下就行了

六、通过文件流的形式写入

6-1、使用FileStream写入代码如下

using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Text;
using UnityEngine;

public class FileStream_Write : MonoBehaviour
{
    public string path = Application.streamingAssetsPath;
    // Start is called before the first frame update
    void Start()
    {
       
        string content = "测试文档测试文档测试文档测试文档测试文档测试文档";
        //文件流形式写入文档
        using (FileStream fs = new FileStream(path + "/Datatxt.txt", FileMode.Open, FileAccess.Write))
        {
            byte[] bytes = Encoding.UTF8.GetBytes(content);
            fs.Write(bytes, 0, bytes.Length);
            fs.Close();
        }
    }
}

6-2、结果如下

在这里插入图片描述

七、使用流形式写入数据

有读就有写,设计的如此完美,哎,就是这么好用

7-1、使用StreamWriter写入代码如下:

using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Text;
using UnityEngine;

public class StreamWriter_Write : MonoBehaviour
{
    public string path = Application.streamingAssetsPath;
    // Start is called before the first frame update
    void Start()
    {
        string content = "测试斯柯达监控及安第三季度看金库";
        //流形式写入文档
        using (StreamWriter sr = new StreamWriter(path + "/测试Datatxt.txt"))
        {
            //Write写入之后最后不会有空的一行
            //sr.Write(content);
            //WriteLine 写入之后最后一行有空的一行
            sr.WriteLine(content);
            sr.Close();
            sr.Dispose();
        }
    }
}

7-2、WriteLine结果如下

在这里插入图片描述

7-3、Write结果如下

在这里插入图片描述
添加一下解释Write和WriteLine
writeLine:将要输出的字符串与换行控制字符一起输出,当次语句执行完毕时候,光标会移到目前输出字符串的下一行。
write:光标会停在输出字符串的最后一个字符,不会移动到下一行。

所以就会出现以上结果一个一行一个两行


总结

本文使用了File类读取/写入,文件流读取/写入,流文件读取/写入
记录一下,以便忘记

不定时更新Unity开发技巧,觉得有用记得一键三连哦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1320280.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【深度学习】序列生成模型(二):束搜索

文章目录 序列生成束搜索理论基础算法步骤python实现 序列生成 在进行最大似然估计训练后的模型 p θ ( x ∣ x 1 : ( t − 1 ) ) p_\theta(x | \mathbf{x}_{1:(t-1)}) pθ​(x∣x1:(t−1)​),我们可以使用该模型进行序列生成。生成的过程是按照时间顺序逐步生成序…

adb: error: cannot create file/directory ‘d:/1.png‘: No such file or directory

将文件从设备读取到PC 由于权限问题&#xff0c;不能直接pull到电脑磁盘根目录&#xff0c;否则会报错&#xff1a; adb pull <remote> <local> eg: C:\Users\admin>adb pull /sdcard/server.log C:\Users\admin\Desktop /sdcard/server.log: 1 file pulled.…

LeedCode刷题---二分查找类问题

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C/C》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 一、二分查找 题目链接&#xff1a;二分查找 题目描述 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一…

基于STC89C51单片机实现的森林防火系统源码+仿真+原理图+设计报告,含视频讲解

森林防火 摘要 森林防火是非常必要的,火灾对森林的破坏是具有毁灭性的,有着很大的危害,在春秋季节森林火灾高发期,若发生火灾,对人民生活带来极大危害,不仅危害人们生产生活,而且对地球环境产生影响.本课题研究的内容是以单片机STC89C51为控制核心&#xff0c;以MQ-2型半导体电…

Android hilt使用

一&#xff0c;添加依赖库 添加依赖库app build.gradle.kts implementation("com.google.dagger:hilt-android:2.49")annotationProcessor("com.google.dagger:hilt-android:2.49")annotationProcessor("com.google.dagger:hilt-compiler:2.49"…

关于前端学习的思考-浮动元素嵌套块级元素12.18

1、块级元素嵌套浮动元素 先摆图片&#xff0c;当橘色的盒子高度减少的时候&#xff0c;NK AD TB PK NN并不会减少。如何解决呢&#xff1f; 加一个overflow&#xff1a;clip或者hidden 2、浮动元素嵌套块级元素 加一个overflow&#xff1a;clip或者hidden 综上所述&#xff0…

2020 年网络安全应急响应分析报告

2020 年全年奇安信集团安服团队共参与和处置了全国范围内 660起网络安全应急响应事件。2020 年全年应急响应处置事件行业 TOP3 分别为:政府部门行业(146 起)医疗卫生行业(90 起)以及事业单位(61 起&#xff0c;事件处置数分别占应急处置所有行业的 22.1%、13.6%、9.2%。2020 年…

修改npm源码解决服务端渲染环境中localstorage报错read properties of undefined (reading getItem)

现象&#xff1a; 这个问题是直接指向了我使用的第三方库good-storage&#xff0c;这是一个对localStorage/sessionStorage做了简单封装的库&#xff0c;因为项目代码有一个缓存cache.ts有用到 原因分析&#xff1a; 从表象上看是storage对象找不到getItem方法&#xff0c; 但…

Vue3使用Three.js导入gltf模型并解决模型为黑色的问题

背景 如今各类数字孪生场景对三维可视化的需求持续旺盛&#xff0c;因为它们可以用来创建数字化的双胞胎&#xff0c;即现实世界的物体或系统的数字化副本。这种技术在工业、建筑、医疗保健和物联网等领域有着广泛的应用&#xff0c;可以帮助人们更好地理解和管理现实世界的事…

Selenium框架的使用心得(一)

最近使用selenium框架实现业务前端的UI自动化&#xff0c;在使用selenium时&#xff0c;有一些心得想要和大家分享一下~ Selenium是一款用于web应用程序测试的工具&#xff0c;常用来实现稳定业务的UI自动化。这里&#xff0c;不想对其发展历史做介绍&#xff0c;也不想用官方…

EXCEL SUM类函数

参考资料 万能函数SUMPRODUCT超实用的10种经典用法 目录 一. SUM二. SUMIF2.1 统计贾1的销售额2.2 > 900 的销售总额2.3 计算贾1和贾22的销售总额2.4 多区域计算 三. SUMIFS3.1 统计苹果&#xff0c;在第一季度的总数量3.2 统计苹果&#xff0c;在第一季度&#xff0c;>…

智能家居和智能家居控制设备有什么区别?

智能家居和智能家居控制设备在功能和用途伤的区别&#xff1a; 智能家居是一种整体的概念&#xff0c;它涵盖了整个家庭环境的智能化&#xff0c;包括智能家电、智能照明、智能安防等设备的互联互通和协同工作。智能家居的目标是通过中央控制器或智能音箱等设备&#xff0c;实现…

Python内置函数一览表

为了提高程序员的开发效率&#xff0c;Python 提供了很多可以直接拿来用的函数&#xff08;初学者可以先理解为方法&#xff09;&#xff0c;每个函数都可以帮助程序员实现某些具体的功能。 举个例子&#xff0c;在 Python 2.x 中 print 只是一个关键字&#xff0c;但在 Pytho…

cefsharp120.1.8(cef120.1.8,Chromium120.0.6099.109)版本升级测试,其他版本H264版本

此版本最新版cef120.1.8,Chromium120.0.6099.109 此更新包括一个高优先级安全更新 This update includes a high priority security update. 说明&#xff1a;本版本暂时不支持264&#xff0c;其他H264版本参考119,116&#xff0c;114&#xff0c;110&#xff0c;109等版本 c…

Spring 原理(一)

Spring 原理 它是一个全面的、企业应用开发一站式的解决方案&#xff0c;贯穿表现层、业务层、持久层。但是 Spring仍然可以和其他的框架无缝整合。 Spring 特点 轻量级控制反转面向切面容器框架集合 Spring 核心组件 Spring 常用模块 Spring 主要包 Spring 常用注解 bean …

CUDA C:线程、线程块与线程格

相关阅读 CUDA Chttps://blog.csdn.net/weixin_45791458/category_12530616.html?spm1001.2014.3001.5482 第一百篇博客&#xff0c;写点不一样的。 当核函数在主机端被调用时&#xff0c;它会被转移到设备端执行&#xff0c;此时设备会根据核函数的调用格式产生对应的线程(…

如何应用基础故障编排?

基础故障编排是保障系统稳定性和可用性的关键环节。通过有效应用基础故障编排&#xff0c;组织能够更快速、更智能地应对系统故障&#xff0c;从而提升业务的可靠性和竞争力。本文将介绍如何应用基础故障编排! 1、选择合适的工具&#xff1a; 选择适合组织需求的基础故障编排工…

9. DashBoard

9. DashBoard 文章目录 9. DashBoard9.1 部署Dashboard9.2 使用DashBoard 在kubernetes中完成的所有操作都是通过命令行工具kubectl完成的。 为了提供更丰富的用户体验&#xff0c;kubernetes还开发了一个基于web的用户界面&#xff08;Dashboard&#xff09;。 用户可以使用…

Mysql之Specified key was too long; max key length is xx bytes异常

问题原因&#xff1a;mysq索引的字段都太长了 767字节是 MySQL 版本5.6(以及以前版本)中 InnoDB 表的最大索引前缀长度限制&#xff0c;MyISAM 表的长度为1,000字节。在 MySQL 版本5.7及以上版本中&#xff0c;这个限制增加到了3072字节。 如果对 utf8mb4编码的 varchar 字段设…

python+torch线性回归模型机器学习

程序示例精选 pythontorch线性回归模型机器学习 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《pythontorch线性回归模型机器学习》编写代码&#xff0c;代码整洁&#xff0c;规则&#xf…