Unity开发之C#基础-File文件读取

news2025/1/17 6:18:27

前言

今天我们将要讲解到c#中 对于文件的读写是怎样的 那么没接触过特别系统编程小伙伴们应该会有一个疑问 这跟文件有什么关系呢? 我们这样来理解 首先 大家对电脑或多或少都应该有不少的了解吧 那么我们这些软件 都是通过变成一个一个文件保存在电脑中 我们才可以去使用他们对吧 就好比下载一个软件实际上就是把这个软件的启动条件也就是各种文件保存到电脑中而已 在比如 在我们开发或者玩游戏的时候很多游戏都有存档吧 不能说我这关没完玩 下次再玩直接就是消失了重新玩了 那也太变态了,其实对此 就涉及到了通过读写的操作 将我们想要保存的游戏数据 储存到当前玩家的电脑当中 (单机游戏)普遍都是这样 不过现在很多大型的游戏都是选择把数据保存到服务器那边 这样不管你换手机也好还是异地登陆都可以继承本来的数据 等等很多例子。下面我们初步了解以下 程序中的文件读写

文章目录

  • 前言
  • 文件
    • 程序变量存储位置
    • 程序中文件的介绍
    • 文件相关类
    • Path类
    • Directory类
    • File类
  • 流(Stream)
  • 流的分类
  • 读写器的分类
  • 小技巧
  • 总结

文件

程序变量存储位置

在之前我们介绍过 比如 我们定义的int,float 等值类型变量 都会暂时存储在“堆”“栈” 哪怕是参数 静态成员 局部变量等等都是一样 可这些存储位置和存储的数据只能供我们在运行程序时使用 一旦我们关闭了程序他们就会消失 如何将这些数据持久化呢 这就是我们接下来要学习的通过“流”的形式将数据保存在一个文件中 进行读写

程序中文件的介绍

  1. 文件是一种数据持久化的形式
  2. 有名称,路径
  3. 数据以字节的形式存储在文件中
  4. 可通过”流“的形式读写

文件相关类

类名说明
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是所有流的抽象基类
• 对流进行读取——将流中的数据读取到具体的数据结构中
• 对流进行写入——把数据结构中的数据写入到流中

流的分类

流分为两种 字符流和字节流

  1. 字节流: 以字节为单位进行读写,能处理任何类型数据
  2. 字符流:以字符为单位进行读写,只能处理字符数据

在这里插入图片描述
这几个类 是我们要经常用到的:
3. NetworkStream——提供网络通信的基础数据流
4. FileStream——用于将数据以流的形式写入文件,或从文件中读取
5. MemoryStream——用于对内存中的数据进行写入或读取
6. GZipStream——提供用于压缩和解压缩流的数据

读写器的分类

Stream类是流的整体的父类 旗下还有我们经常使用的读写类 被称为读写器类

  1. 文本读写器:TextReader TextWriter
  2. 字符串读写器: StringReader StringWriter
  3. 二进制读写器:BinaryReader BinaryWriter
  4. 流读写器: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关闭

小技巧

在这里插入图片描述
在这里插入图片描述

总结

对于文件读取写入等操作有太多需要使用的方法等 需要大家尝试各种方法的使用 代码也是万变不离其宗的 下期我们讲解最后一章委托的使用

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

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

相关文章

vue根据接口数据配置动态路由(动态配置后台管理系统路由权限)

文章目录 前言一、什么是动态路由二、以 后台管理系统路由权限配置为例静态路由配置动态路由配置 总结如有启发,可点赞收藏哟~ 前言 其几天记录了根据目录接口动态配置vue的静态路由 本文结合addRoute记录下配置动态路由 一、什么是动态路由 动态路由是根据实际配…

基于材料生成算法优化概率神经网络PNN的分类预测 - 附代码

基于材料生成算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于材料生成算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于材料生成优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神…

Gradle常用命令与参数依赖管理和版本决议

一、Gradle 常用命令与参数 本课程全程基于 Gradle8.0 环境 1、Gradle 命令 介绍 gradle 命令之前我们先来了解下 gradle 命令怎么在项目中执行。 1.1、gradlew gradlew 即 Gradle Wrapper,在学习小组的第一课时已经介绍过了这里就不多赘述。提一下执行命令&am…

msvcp140.dll是什么?msvcp140.dll丢失的有哪些解决方法

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“msvcp140.dll丢失”。这个错误通常会导致某些应用程序无法正常运行。为了解决这个问题,我们需要采取一些措施来修复丢失的msvcp140.dll文件。本文将详细介绍5个解决msvcp140.dl…

所有产品都值得用AI再做一遍,让AGI与品牌营销双向奔赴

微软 CEO Satya Nadella 曾经说过:“所有的产品都值得用 AI 重做一遍。” AI 大模型的出现,开启了一个全新的智能化时代,重新定义了人机交互。这让生成式 AI 技术变得「触手可得」,也让各行业看到 AGI 驱动商业增长的更大可能性。…

【开源】基于Vue和SpringBoot的高校宿舍调配管理系统

项目编号: S 051 ,文末获取源码。 \color{red}{项目编号:S051,文末获取源码。} 项目编号:S051,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能需求2.1 学生端2.2 宿管2.3 老师端 三、系统…

Axios 请求响应结果的结构

发送请求 this.$axios.get(https://apis.jxcxin.cn/api/title?urlhttps://apis.jxcxin.cn/,{params: {id: 10}}).then(res > {console.log(res)})输出返回结果 confing 请求时的配置对象,如果请求的url,请求的方法,请求的参数&#xff0c…

如何解决msvcp110.dll丢失问题,分享5个有效的解决方法

最近,我在使用电脑时遇到了一个令人头疼的问题——msvcp110.dll丢失。这个错误通常会导致某些应用程序无法正常运行。为了解决这个问题,我们需要采取一些有效的方法来修复丢失的msvcp110.dll文件。那么,msvcp110.dll到底是什么呢?…

【python基础(三)】操作列表:for循环、正确缩进、切片的使用、元组

文章目录 一. 遍历整个列表1. 在for循环中执行更多操作2. 在for循环结束后执行一些操作 二. 避免缩进错误三. 创建数值列表1. 使用函数range()2. 使用range()创建数字列表3. 指定步长。4. 对数字列表执行简单的统计计算5. 列表解析 五. 使用列表的一部分-切片1. 切片2. 遍历切片…

一文搞懂什么是 GNU/Linux 操作系统

Author:rab 目录 前言一、UNIX二、Linux三、GNU 前言 你是否经常看见或听说过这么一句话:这是一个类 Unix 的 GNU/Linux 操作系统,你是怎么理解这句话的呢?想要搞懂这句话的含义,你需要了解以下三点基本常识。 一、U…

RedisTemplate使用详解

RedisTemplate介绍StringRedisTemplate介绍RedisConnectionFactory介绍RedisConnectionFactory源码解析 RedisOperations介绍RedisOperations源码解析 RedisTemplate使用连接池配置RedisTemplate连接池连接池配置 RedisTemplate应用场景RedisTemplate主要特点RedisTemplate使用…

Nuxt.js Next.js Nest.js

Nuxt.js和Next.js都是服务端渲染框架(SSR),属于前端框架,Nest.js则是node框架,属于后端框架。 其中Nuxt.js是vue的ssr框架,Next.js是react的ssr框架。 都是比vue和react更上层的前端框架。 文章目录 1.SSR2.Nuxt2.1 Nuxt的下载2.2 Nuxt的集成2.3 Nuxt…

【tomcat】java.lang.Exception: Socket bind failed: [730048

项目中一些旧工程运行情况处理 问题 1、启动端口占用 2、打印编码乱码 ʮһ�� 13, 2023 9:33:26 ���� org.apache.coyote.AbstractProtocol init ����: Fa…

【DevOps】Git 图文详解(八):后悔药 - 撤销变更

Git 图文详解(八):后悔药 - 撤销变更 1.后悔指令 🔥2.回退版本 reset3.撤销提交 revert4.checkout / reset / revert 总结 发现写错了要回退怎么办?看看下面几种后悔指令吧! ❓ 还没提交的怎么撤销&#x…

人工智能基础_机器学习047_用逻辑回归实现二分类以上的多分类_手写代码实现逻辑回归OVR概率计算---人工智能工作笔记0087

然后我们再来看一下如何我们自己使用代码实现逻辑回归的,对二分类以上,比如三分类的概率计算 我们还是使用莺尾花数据 首先我们把公式写出来 def sigmoid(z): 定义出来这个函数 可以看看到这需要我们理解OVR是如何进行多分类的,我们先来看这个 OVR分类器 思想 OVR(One-vs-…

如何用cmd命令快速搭建FTP服务

环境: Win10专业版 问题描述: 如何用cmd命令快速搭建FTP服务 解决方案: 1.输入以下命令来安装IIS(Internet Information Services): dism /online /enable-feature /featurename:IIS-FTPServer /all …

好用的博客评论系统 Valine 使用及避坑指南

评论系统,即网站的一个小功能,展示评论内容和用户输入框。开源免费的评论系统可不多,原来很火的"多说"评论系统都关闭了,而Disqus又是国外的访问受限。无意间发现了Valine,挺不错的,分享给大家。…

9、鸿蒙应用桌面图标外观和国际化

一、项目资源目录 项目下的resoueces目录为资源配置目录,其中base为基础配置,即在任何语言环境下都会加载的资源, color.json:用于配置颜色,如页面的背景和文字的颜色。 string.json:用于设置文字&#…

java_函数式接口

文章目录 一、什么是函数式接口二、四大核心函数式接口三、使用举例 一、什么是函数式接口 如果一个接口只有一个抽象方法,那么该接口就是一个函数式接口函数式接口的实例可以通过 lambda 表达式、方法引用或者构造方法引用来创建如果我们在某个接口上声明了 Funct…

Pandas一键爬取解析代理IP与代理IP池的维护

目录 前言 一、获取代理IP 二、解析代理IP 三、维护代理IP池 四、完整代码 总结 前言 在爬虫过程中,我们经常会使用代理IP来绕过一些限制,比如防止被封IP等问题。而代理IP的获取和维护是一个比较麻烦的问题,需要花费一定的时间和精力。…