Unity开发之C#基础-File文件读取
前言
今天我们将要讲解到c#中 对于文件的读写是怎样的 那么没接触过特别系统编程小伙伴们应该会有一个疑问 这跟文件有什么关系呢? 我们这样来理解 首先 大家对电脑或多或少都应该有不少的了解吧 那么我们这些软件 都是通过变成一个一个文件保存在电脑中 我们才可以去使用他们对吧 就好比下载一个软件实际上就是把这个软件的启动条件也就是各种文件保存到电脑中而已 在比如 在我们开发或者玩游戏的时候很多游戏都有存档吧 不能说我这关没完玩 下次再玩直接就是消失了重新玩了 那也太变态了,其实对此 就涉及到了通过读写的操作 将我们想要保存的游戏数据 储存到当前玩家的电脑当中 (单机游戏)普遍都是这样 不过现在很多大型的游戏都是选择把数据保存到服务器那边 这样不管你换手机也好还是异地登陆都可以继承本来的数据 等等很多例子。下面我们初步了解以下 程序中的文件读写
文章目录
- 前言
- 文件
- 程序变量存储位置
- 程序中文件的介绍
- 文件相关类
- Path类
- Directory类
- File类
- 流(Stream)
- 流的分类
- 读写器的分类
- 小技巧
- 总结
文件
程序变量存储位置
在之前我们介绍过 比如 我们定义的int,float 等值类型变量 都会暂时存储在“堆”“栈” 哪怕是参数 静态成员 局部变量等等都是一样 可这些存储位置和存储的数据只能供我们在运行程序时使用 一旦我们关闭了程序他们就会消失 如何将这些数据持久化呢 这就是我们接下来要学习的通过“流”的形式将数据保存在一个文件中 进行读写
程序中文件的介绍
- 文件是一种数据持久化的形式
- 有名称,路径
- 数据以字节的形式存储在文件中
- 可通过”流“的形式读写
文件相关类
| 类名 | 说明 |
|---|---|
| Path | 静态类,用于路径,文件名字字符串处理 |
| DIrectory | 静态类,包含一些处理目录的静态方法 |
| File | 静态类,包含一些处理文件的静态方法 |
我们来逐一的介绍一下这几个类的使用方式
Path类
| 方法名 | 说明 |
|---|---|
| Combine | 将多个字符串加入/或者\拼接成一个路径字符串 |
| GetFileName | 获取全路径字符串中的文件名,包含后缀 |
| GetExtension | 获取全路径字符串中的后缀 |
| GetDirectoryName | 获取全路径字符串中的目录部分 |
| GetFullPath | 获取全路径 |
| GetPathRoot | 获取根路径 |
我们创建一个新的项目 来好好试验一下这些方法的作用 在此之前 大家先去各自的盘里创建一个新的txt文本文件来为我们一会使用做准备:

我呢 在自己的e盘里创建了一个test文件夹 里面有创建了一个love的txt文本文档。

Directory类
| 方法名 | 说明 |
|---|---|
| CreateDirectory | 创建目录 |
| Delete | 删除目录 |
| Exists | 判断目录是否存在 |
| GetParent | 获取父目录 |
| GetFIles | 获取目录中的文件 |
| GetDirectories | 获取目录中的子目录 |
| Move | 移动目录,包含其中的文件和子目录 |

File类
| 方法名 | 说明 |
|---|---|
| Create | 创建文件 |
| Delete | 删除文件 |
| Exists | 判断文件是否存在 |
| WriteAllText | 将字符产写入文件中 |
| AriteAllBytes | 将字节数组写入文件中 |
| AppendAllText | 将字符串追加到文件中 |
| ReadAllLines | 读取文件的所有行,以字符串数组返回 |
| ReadAllBytes | 读取文件中的所有字节,以字节数组返回 |
| Copy | 拷贝文件 |
| Move | 移动文件 |

这就是三个基本的文件类的方法使用,下面我们介绍另一种方式:流
流(Stream)
流(Stream)可以理解为内存中的字节序列,Stream是所有流的抽象基类
• 对流进行读取——将流中的数据读取到具体的数据结构中
• 对流进行写入——把数据结构中的数据写入到流中
流的分类
流分为两种 字符流和字节流
- 字节流: 以字节为单位进行读写,能处理任何类型数据
- 字符流:以字符为单位进行读写,只能处理字符数据

这几个类 是我们要经常用到的:
3. NetworkStream——提供网络通信的基础数据流
4. FileStream——用于将数据以流的形式写入文件,或从文件中读取
5. MemoryStream——用于对内存中的数据进行写入或读取
6. GZipStream——提供用于压缩和解压缩流的数据
读写器的分类
Stream类是流的整体的父类 旗下还有我们经常使用的读写类 被称为读写器类
- 文本读写器:TextReader TextWriter
- 字符串读写器: StringReader StringWriter
- 二进制读写器:BinaryReader BinaryWriter
- 流读写器:StreamReader StreamWriter
流的使用与基本的文件读取 而且流的表达形式也不同 不过 基本上的表达方式是一致的
下面是一些基本的方法介绍:
StreamReader
| 构造器 | 说明 |
|---|---|
| StreamReader(Stream) | 在一个字节流上建立流读取器,用于读取字符 |
| StreamReader(string) | 在文件上建立流读取器,用于读取字符 |
| StreamReader(Stream,Encoding) | 可指定字符集 |
| StreamReader(string,Encoding) | 可知道字符集 |
| 方法 | 说明 |
| Read | 都一个字符并返回,如到达底部返回-1 |
| ReadLine | 读一行字并返回一字符串,如到达底部返回null |
| ReadToEnd | 读全部文本,返回一字符串 |
| Close | 关闭 |
StreamWriter
| 构造器 | 说明 |
|---|---|
| StreamWriter(Stream) | 在一个字节流上建立流写出器,用于写字符 |
| StreamWriter(string) | 在文件上建立流写出器,用于写字符 |
| StreamWriter(Stream,Encoding) | 可指定字符集 |
| 方法 | 说明 |
| – | – |
| Write | 具有多个重载,都以字符形式写数据 |
| WriteLine | 具有多个重载,都以字符形式写数据,结尾会换行 |
| AutoFlush | 可设置或查询是否自动刷缓存 |
| Flush | 强制刷缓存 |
| Close | 关闭 |
小技巧


总结
对于文件读取写入等操作有太多需要使用的方法等 需要大家尝试各种方法的使用 代码也是万变不离其宗的 下期我们讲解最后一章委托的使用
相关文章:
Unity开发之C#基础-File文件读取
前言 今天我们将要讲解到c#中 对于文件的读写是怎样的 那么没接触过特别系统编程小伙伴们应该会有一个疑问 这跟文件有什么关系呢? 我们这样来理解 首先 大家对电脑或多或少都应该有不少的了解吧 那么我们这些软件 都是通过变成一个一个文件保存在电脑中 我们才可以…...
深度学习之二(前馈神经网络--Feedforward Neural Network)
概念 前馈神经网络(Feedforward Neural Network)是一种最基本的神经网络结构,也被称为多层感知器(Multilayer Perceptron,MLP)。它的特点是信息只在网络中单向传播,不会形成环路。每一层神经元的输出都作为下一层神经元的输入,没有反馈回路。 结构: 前馈神经网络通…...
2023全球边缘计算大会深圳站-核心PPT资料下载
一、峰会简介 边缘计算,是指在靠近物或数据源头的一侧,采用网络、计算、存储、应用核心能力为一体的开放平台,就近提供最近端服务。其应用程序在边缘侧发起,产生更快的网络服务响应,满足行业在实时业务、应用智能、安…...
【亚太杯思路助攻】2023年第十三届APMCM亚太地区大学生数学建模竞赛——(文末领取方式)
2023年第十三届APMCM亚太地区大学生数学建模竞赛——来啦!!! 大家准备好了吗?别担心,【数模加油站】会像数模国赛、研赛一样,第一时间提供无偿解题思路、代码、参考文献等资料帮助大家。 祝各位小伙伴都能…...
vue开发一、在Vue中引入ElementUI二、在Vue中使用阿里图标库
目录 一、在Vue中引入ElementUI1. 安装ElementUI2. 引入ElementUI3. 使用ElementUI组件 二、在Vue中使用阿里图标库1. 在阿里图标库中选择图标2. 下载图标3. 引入图标4. 使用图标 总结 一、在Vue中引入ElementUI ElementUI是一种基于Vue的第三方UI库,提供了许多常用…...
基于SpringBoot+Mybatis plus+React.js实现条件选择切换搜索功能
笔记/朱季谦 在写React前端逻辑时,经常遇到可以切换不同条件的列表查询功能,例如下边截图这样的,其实,这块代码基本都一个逻辑,可以一次性将实现过程记录下来,待以后再遇到时,直接根据笔记复用…...
【STM32】W25Q64 SPI(串行外设接口)
一、SPI通信 0.IIC与SPI的优缺点 https://blog.csdn.net/weixin_44575952/article/details/124182011 1.SPI介绍 同步(有时钟线),高速,全双工(数据发送和数据接收各占一条线) 1)SCK:时钟线--&…...
如何使用Mondo Rescue备份及恢复Linux系统(制作ISO镜像,成功恢复)
环境: CentOS Linux release 7.9.2009 mondoarchive v3.3.0-r3762 PVE 虚拟机 问题描述: 如何使用Mondo Rescue备份及恢复Linux系统, 制作ISO镜像, 整个系统将全部备份并恢复? Mondo Rescue是一个开源的备份和恢复工具,旨在提供快速、可靠的系统备份和恢复解决方案。…...
Java如何获取泛型类型
泛型(Generic) 泛型允许程序员在强类型程序设计语言中编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型。各种程序设计语言和其编译器、运行环境对泛型的支持均不一样。Ada、Delphi、Eiffel、Java、C#、F#、Swift 和 Vis…...
2023年【起重机械指挥】考试题及起重机械指挥找解析
题库来源:安全生产模拟考试一点通公众号小程序 起重机械指挥考试题考前必练!安全生产模拟考试一点通每个月更新起重机械指挥找解析题目及答案!多做几遍,其实通过起重机械指挥作业考试题库很简单。 1、【多选题】按照事故造成的人…...
【前端学java】Java中的接口和枚举概念(7)
theme: smartblue 往期回顾: 【前端学java】JAVA开发的依赖安装与环境配置 (0)【前端学 java】java的基础语法(1)【前端学java】JAVA中的packge与import(2)【前端学java】面向对象编程基础-类…...
P8611 [蓝桥杯 2014 省 AB] 蚂蚁感冒(模拟)
首先,我们自然而然的想到和 P1007独木桥 的机制是一样的, 我们只需要把蚂蚁的相遇并掉头视作互相穿过即可 标记向左,向右蚂蚁的数量 for (int i 0; i < num - 1; i){int temp 0;scanf("%d", &temp);// 向右移动if (tem…...
边缘计算是如何为元宇宙提供动力的?
构建元宇宙虚拟世界并不简单,也并不便宜,但是还是有许多大型公司正在转移大量资源来开发他们的元宇宙业务,当然大部分企业注意力都围绕着 VR 耳机、AR 眼镜、触觉手套和其他沉浸式虚拟现实体验所需的可穿戴硬件。虽然这种沉浸式的体验是最终结…...
优秀智慧园区案例 - 上海世博文化公园智慧园区,先进智慧园区建设方案经验
一、项目背景 世博文化公园是上海的绿色新地标,是生态自然永续、文化融合创新、市民欢聚共享的大公园。作为世博地区的城市更新项目,世博文化公园的建设关乎上海城市风貌、上海文化展示、城市生态环境、市民游客体验、上海服务品牌等,被赋予…...
【DevOps】Git 图文详解(五):远程仓库
Git 图文详解(五):远程仓库 1.远程用户登录1.1 🔑 远程用户登录:HTTS1.2 🔑 远程用户登录:SSH 2.远程仓库指令 🔥3.推送 push / 拉取 pull4.fetch 与 pull 有什么不同 ? …...
如果在手机没有root的情况下完成安卓手机数据恢复
您是否不小心从安卓设备中删除了重要数据? 担心如何取回您的照片、视频和文档? 有时您可能会不小心删除重要数据并使用安卓 root方法取回文件。 许多用户不喜欢根植他们的安卓设备,因为这是一种复杂的方法。 在本指南中,我们将向您…...
C++学习 --stack
目录 1, 什么是stack 2, 创建stack 2-1, 标准数据类型 2-2, 自定义数据类型 2-3, 其他创建方式 3, 操作stack 3-1, 赋值 3-2, 插入元素(push) 3-3, 查询元素 3…...
简单但好用:4种Selenium截图方法了解一下!
前言 我们执行UI自动化操作时,大多数时间都是不在现场的,出现错误时,没有办法第一时间查看到,这时我们可以通过截图当时出错的场景保存下来,后面进行查看报错的原因,Selenium中提供了几种截图的方法&#x…...
【报错记录】解决使用Kotlin写的SpringBoot项目使用Aspect切面无法生效的问题
前言 为了能在SpringBoot使用Kotlin,真的是各种坑都彩礼一遍,这次遇到的问题是Aspect无法对Kotlin代码生效。我这里的使用场景是使用切面切Controller中的方法,用来对接口进行一些初始化和收尾工作。 Aspect在Controller类还是Java代码的时…...
在python中分别利用numpy,tensorflow,pytorch实现数据的增加维度(升维),减少维度(降维)
文章目录 前言一、使用numpy实现升维度,降维度二、使用TensorFlow实现升维度,降维度三、使用PyTorch实现升维度,降维度总结 前言 我们明确一下升维和降维的概念: 升维(Dimensionality Augmentation)&…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...
