Unity学习笔记--File.ReadAllLines和File.ReadAllText的使用以及注意事项(一定要看到最后!!!)

这篇具有很好参考价值的文章主要介绍了Unity学习笔记--File.ReadAllLines和File.ReadAllText的使用以及注意事项(一定要看到最后!!!)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

最近在做文件存储以及读取的时候,需要用到C#给我们提供的类:File
具体使用方法可以看官方文档:C# File 类
这篇文章只会说File.ReadAllLinesFile.ReadAllText的使用以及注意事项

Tips:(一定要看到最后!!!)

一、File.ReadAllLines

重载 操作
ReadAllLines(String) 打开一个文本文件,读取文件的所有行,然后关闭该文件。
ReadAllLines(String, Encoding) 打开一个文件,使用指定的编码读取文件的所有行,然后关闭该文件。
public static string[] ReadAllLines (string path);
参数

String
要打开以进行读取的文件。

返回

String[]
包含文件所有行的字符串数组。

例子

现在假设我的文件路径是‪ C:\Users\Admin\Desktop\log.txt
内容如下
file.readalltext,Unity学习笔记,c#,unity
文本格式如下

1
2
3
4
5

现在我们利用 File.ReadAllLines 读取文件内容,并且打印出来

string file_path = "C:/Users/Admin/Desktop/log.txt";
string[] contents = File.ReadAllLines(file_path);
foreach (string content in contents)
{
    Debug.Log(content);
}

file.readalltext,Unity学习笔记,c#,unity

二、File.ReadAllText

重载 操作
ReadAllText(String) 打开一个文本文件,读取文件的所有行,然后关闭该文件。
ReadAllText(String, Encoding) 打开一个文件,使用指定的编码读取文件的所有行,然后关闭该文件。
public static string ReadAllText (string path);
参数

String
要打开以进行读取的文件。

返回

String
包含文件中所有文本的字符串。

例子

文件路径和内容同上

现在我们利用 File.ReadAllLines 读取文件内容,并且打印出来

string file_path = "C:/Users/Admin/Desktop/log.txt";
string content = File.ReadAllText(file_path);
Debug.Log(content);

file.readalltext,Unity学习笔记,c#,unity

注意事项

如果在Windows下,我们按下Enter键,也就是我们常说的回车键,其实内部会生成两个字符,一个是 \r(回车符) ,一个是 \n(换行符),如果是计算机专业的可能会熟悉点。

可能出现的问题

我们在编程的时候,可能会使用File.ReadAllText来读取文件,这个时候如果文件有很多换行,那么这个时候比较常见的做法如下

string file_path = "C:/Users/Admin/Desktop/log.txt";
string content = File.ReadAllText(file_path);
string[] contents = content.Split("\n");

foreach(string s in contents)
{
    Debug.Log(s);
}

但是这样会有问题,我们来测试下输出什么
file.readalltext,Unity学习笔记,c#,unity
看起来挺正常,但是我们继续细化

foreach (string s in contents)
{
	Debug.Log("------------");
	Debug.Log("字符串:" + s);
	Debug.Log("字符串长度:" + s.Length);
}

这里我们多打印了一下字符串的长度
file.readalltext,Unity学习笔记,c#,unity
我们可以发现,字符串为1,2,3,4,5的,长度却是2
我们获得的contents是经过Split处理的,理所应当被分割出来的字符串数组应该是1,2,3,4,5。但为什么对应字符串长度是2,而不是1呢?
其实,如果认真读了上面的注意事项,我们就不能发现,我们现在是在Windows下测试的,我们敲下的Enter键,会生成两个字符,一个是 \r(回车符) ,一个是 \n(换行符)

windows下换行符是\r\n
\r回车,\n换行
用二进制方式时是\r\n,用文本方式时是\n
当你在记事本或word编辑时,按下enter,该软件默认的方式是插入回车\r,再插入换行\n

所以文本里面显示的是:

1
2
3
4
5

但是存储在计算机中(二进制形式)如下

1\r\n2\r\n3\r\n4\r\n5\r\n

我们可以打印下文件内容

byte[] bs = File.ReadAllBytes(file_path);
Debug.Log(bs.Length);
foreach (byte ch in bs)
{
	Debug.Log(ch);
}

file.readalltext,Unity学习笔记,c#,unity
由于内部是由ASCLL码存储的,所以我们查表,得知13是回车符,也就是\r,10是换行符,也就是\n
file.readalltext,Unity学习笔记,c#,unity
为了验证我们的想法,打个断点进去看看
file.readalltext,Unity学习笔记,c#,unity文章来源地址https://www.toymoban.com/news/detail-782362.html

总结

  1. 尽量使用File.ReadAllLines处理需要换行处理的文件
  2. 需要注意Windows下,敲下Enter键是会生成两个字符:\r和\n

到了这里,关于Unity学习笔记--File.ReadAllLines和File.ReadAllText的使用以及注意事项(一定要看到最后!!!)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity学习笔记--使用 C# 开发一个 LRU

    什么是 LRU 在计算机系统中,LRU(Least Recently Used,最近最少使用)是一种缓存置换算法。缓存是计算机系统中的一种能够高速获取数据的介质,而缓存置换算法则是在缓存空间不足时,需要淘汰掉部分缓存数据以腾出空间,使得后来需要访问数据能够有更多的缓存空间可用。

    2024年02月13日
    浏览(31)
  • 『FFmpeg学习笔记』MAC系统电脑安装FFmpeg以及使用

    MAC系统电脑安装FFmpeg

    2024年04月16日
    浏览(34)
  • Unity学习笔记--数据持久化之PlayerPrefs的使用

    PlayerPrefs是Unity游戏引擎中的一个类,用于在游戏中存储和访问玩家的偏好设置和数据。它可以用来保存玩家的游戏进度、设置选项、最高分数等信息。PlayerPrefs将数据存储在本地文件中,因此可以在游戏重新启动时保持数据的持久性。 PlayerPrefs中存储的数据存储在哪里? PC端

    2024年02月05日
    浏览(36)
  • 【Unity】Unity Shader学习笔记(四)创建和使用、基本语法、属性基本类型、数值精度

    由于着色器是依赖于材质的,所以创建着色器之前通常要先创建一个材质(Material)。然后再创建一个Shader。 结果如下: 然后给材质指定Shader,再给物体指定材质。 建好Shader后双击打开,通常默认使用vs studio开发shader。一个Shader主要的内容都是写在 Shader {} 代码块中,其中包

    2024年02月16日
    浏览(34)
  • UE学习笔记--如何区分FString、FName、FText,以及使用场景

    最近在学习 UE,发现 UE 基本没有用到 std::string,基本使用的是FString、FName、FText。去网络上查了些资料并且学习了下,在这里做个简单介绍和总结。为什么需要三种字符串呢?主要是因为他们三都有自己擅长的场景。 FString 是 的缩写Fixed String,是虚幻引擎中使用的动态字符串

    2024年01月21日
    浏览(34)
  • Unity-3DRPG游戏 学习笔记(1)--使用URP渲染管线

    教程地址: Unity2020 3DRPG游戏开发教程|Core核心功能01:Create Project 创建项目导入素材|Unity中文课堂_哔哩哔哩_bilibili 创建URP通用渲染管线(2021版本) 1. 打开:Windows--Package Manager--左上角下拉选择Unity Registry--搜索Universal RP--Install 2. Project窗口--Assets--右键Create--Rendering--URP Asstes

    2024年02月11日
    浏览(36)
  • SpringCloud学习笔记(十三)_Zipkin使用SpringCloud Stream以及Elasticsearch

    在前面的文章中,我们已经成功的使用Zipkin收集了项目的调用链日志。但是呢,由于我们收集链路信息时采用的是http请求方式收集的,而且链路信息没有进行保存,ZipkinServer一旦重启后就会所有信息都会消失了。基于性能的考虑,我们可以对它进行改造,使用SpringCloud Strea

    2024年02月04日
    浏览(30)
  • JAVA基础学习笔记-day15-File类与IO流

    博文主要是自己学习JAVA基础中的笔记,供自己以后复习使用,参考的主要教程是B站的 尚硅谷宋红康2023大数据教程 老骥伏枥,志在千里 --曹操《龟虽寿》 1.1 概述 File类及本章下的各种流,都定义在 java.io 包下。 一个File对象代表硬盘或网络中可能存在的一个文件或者文件目

    2024年01月21日
    浏览(31)
  • Unity学习笔记--如何在Unity中把自己的代码打包成dll给别人使用?(纯保姆式教学,看完还不会,今晚八点,来沙城砍我)

    最近公司放年假了,没什么事做,所以来公司学习(蹭吃蹭喝ing) 突然记起来,秋招的时候,有面试官问我:如何在Unity中把自己写的代码给别人或者其他项目使用? 当时知道是利用C#的程序集来做,但是问我具体该怎么处理,我就不知道了,因为当时只有理论知识,没有实

    2024年01月18日
    浏览(24)
  • TypeScript学习笔记以及学习中遇到的问题

    本笔记是来自翻阅xcatliu的typeScript入门教程文档、TypeScript官方文档的部分摘录、以及观看B站学习视频进行笔记记录与知识点补充、本人实际使用时遇到的问题与解决记录、碎片化接触到相关知识点合并整理而成 TypeScript 的命令行工具安装方法如下: 以上命令会在全局环境下

    2023年04月24日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包