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

前言

今天我们将要讲解到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.mzph.cn/news/160468.shtml

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

相关文章

Spring Boot创建和使用(重要)

Spring的诞生是为了简化Java程序开发的! Spring Boot的诞生是为了简化Spring程序开发的! Spring Boot就是Spring框架的脚手架,为了快速开发Spring框架而诞生的!! Spring Boot的优点: 快速集成框架&#x…

2023年G2电站锅炉司炉证考试题库及G2电站锅炉司炉试题解析

题库来源:安全生产模拟考试一点通公众号小程序 2023年G2电站锅炉司炉证考试题库及G2电站锅炉司炉试题解析是安全生产模拟考试一点通结合(安监局)特种作业人员操作证考试大纲和(质检局)特种设备作业人员上岗证考试大纲…

MySQL 事务的底层原理和 MVCC(一)

在事务的实现机制上,MySQL 采用的是 WAL(Write-ahead logging,预写式日志)机制来实现的。 在使用 WAL 的系统中,所有的修改都先被写入到日志中,然后再被应用到系统中。通常包含 redo 和 undo 两部分信息。 …

【Java开发】 Springboot集成Mybatis-Flex

1 Mybatis-Flex 介绍 1.1简介 Mybatis-Flex 是一个优雅的 Mybatis 增强框架,它非常轻量、同时拥有极高的性能与灵活性。我们可以轻松的使用 Mybaits-Flex 链接任何数据库,其内置的 QueryWrapper 亮点帮助我们极大的减少了 SQL 编写的工作的同时&#xff…

cocos2dx ​​Animate3D(二)

Twirl 扭曲旋转特效 // 持续时间(时间过后不会回到原来的样子) // 整个屏幕被分成几行几列 // 扭曲中心位置 // 扭曲的数量 // 振幅 static Twirl* create(float duration, const Size& gridSize, const Vec2& position, unsigned int twirls, float amplitude)…

基于springboot实现摄影跟拍预定管理系统【项目源码+论文说明】计算机毕业设计

基于springboot实现摄影跟拍预定管理系统演示 摘要 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要…

【2018年数据结构真题】

方法一 给定一个含n(n>1)个整数的数组,请设计一个在时间上尽可能高效的算法,找出数组中未出现的最小正整数。例如,数组{-5,3,2,3}中未出现的最小正整数是1;数组{1,2,…

AIGC变革BI行业,永洪发布vividime全球化品牌

大数据产业创新服务媒体 ——聚焦数据 改变商业 国内BI商业智能市场,一直有着“内永洪,外Tableau”的说法。成立于2012年的永洪科技经过十多年的发展,早已崛起为国内大数据行业的一支劲旅。 ChatGPT火爆出圈之后,AIGC快速渗透&am…

【C++】vector的介绍与使用

🧑‍🎓个人主页:简 料 🏆所属专栏:C 🏆个人社区:越努力越幸运社区 🏆简 介:简料简料,简单有料~在校大学生一枚,专注C/C/GO的干货分…

【Java 进阶篇】Redis 数据结构:轻松驾驭多样性

引言 Redis是一款强大的键值对存储系统,其数据结构的多样性是其引以为傲的特点之一。在这篇博客中,我们将深入探讨Redis的主要数据结构,包括字符串、哈希表、列表、集合和有序集合,并通过实例代码演示它们的用法。 1. 字符串&am…

在中国企业出海的大浪潮下,亚马逊云科技提供遍及全球的基础设施和技术支持

中国技术出海是中国企业更高层次更高质量的全球化。在人类文明发展史上,凝聚中国古人智慧结晶的造纸术、印刷术、火药、指南针等,曾为中国技术出海写下过浓墨重彩的一笔。在今天,如金山办公、店匠科技、ADVANCE.AI等公司又以技术立业&#xf…

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

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

Day27|Leetcode 39. 组合总和 Leetcode 40. 组合总和 II Leetcode131. 分割回文串

Leetcode 39. 组合总和 题目链接 39 组合总和 本题目和前面的组合问题差不多,只不过这里能重复选取数字,还是要注意组合的定义,交换数字顺序还是算一个组合,所以这里还是用我们的startIndex来记录取的数字到哪里了,下…

阿里云发送短信

官方代码如下: // This file is auto-generated, dont edit it. Thanks. package com.aliyun.sample;import com.aliyun.tea.*;public class Sample {/*** 使用AK&SK初始化账号Client* param accessKeyId* param accessKeySecret* return Client* throws Excep…

【电子通识】USB3.0和USB2.0有什么区别?

版本 USB2.0是2000年4月27日由USB-IF组织提出了USB2.0总线协议规范。 USB3.0是2008年11月17日由USB-IF组织提出了超高速USB3.0规范。 图标对比 USB2.0的标志就是和USB1.1的标志基本上没啥区别,还是以前的那个样子,使用黑色颜色用标识 USB3.0它有一个S…

计算机毕业设计 基于微信小程序的“共享书角”图书借还管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

pycurl>=7.43.0.5机器学习环境配置问题

去官网下载对应版本.whl文件,注意使用python --version提前查看 python版本信息和64bit还是32bit,下载对应版本。 cd 到该路径下,并pip。6

opengl制作天空盒

首先创建顶点数组 unsigned int m_uiVaoBufferID; glGenVertexArrays(1, &m_uiVaoBufferID); 然后创建顶点缓冲区 float skyboxVertices[] {// positions-1.0f, 1.0f, -1.0f,-1.0f, -1.0f, -1.0f,1.0f, -1.0f, -1.0f,1.0f, -1.0f, -1.0f,1.0f, 1.0f, -1.0f,-1.0f, 1.…

使用gin 代理 web网页

问web项目的代理,业界常用的方案是nginx做代理,这个是网上最多资料的。 因为我需要做自己的流量转发,也就是所有访问都要经过我的一个流量分发微服务,这和nginx作用冲突了。如果再加个nginx来做第一层方向代理和网页的静态资源代…

【C++干货铺】list的使用 | 模拟实现

个人主页点击直达:小白不是程序媛 C专栏:C干货铺 代码仓库:Gitee 目录 list的介绍及使用 list的介绍 list的使用 list的构造 list迭代器的使用 list的增删查改 list的模拟实现 结点的封装 迭代器的封装 list成员变量 构造函数 …