Unity数据持久化 之 向文件流读写(详细Plus版)

2024-09-04 18:36

本文主要是介绍Unity数据持久化 之 向文件流读写(详细Plus版),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文仅作笔记学习和分享,不用做任何商业用途

本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正​​

 在 Unity 手册中,FileStream 并没有单独的详细介绍,因为它是 .NET 框架的一部分,而不是 Unity 特有的类

Unity - Manual: Streaming Assets (unity3d.com) 

前置知识:
Unity数据持久化 之 二进制存储法-CSDN博客,你必须要知道如何将常用数据转为byte和转回来,知道字符串是通过特殊的Encoding方法转为byte的

1.什么是文件流

        文件流文件流,可以理解为将文件中的数据以流水一样的方式(有序地)通过一个通道去传输

        在定义上是指在计算机中用于处理文件输入和输出操作的一种数据流。它可以将数据从一个地方传输到另一个地方,例如从内存写入到硬盘文件,或者从硬盘文件读取到内存。文件流通常分为两种类型:字节流和字符流

        在unity中,filestream属于字节流

2.基本方法(引用注意)

2.1打开或创建文件

该笔记来源于唐老狮

 2.2重要方法

一个重要的使用方法

4

3.写入与读取

我将进行如下示范,请先有个大概的认识,代码看完之后再看这张图会很清晰

4.向文件流中写入字节

写入字节可以按如下步骤:

 public void WriteBytes(){//首先在Asset下创建一个文件流,叫做Mydata,格式为json//之后试着向其中写入520这个数字,并尝试写入字符串三个字 using (FileStream fs = File.Open(Application.dataPath + "/Mydata.json", FileMode.OpenOrCreate)){//先将520转为字节byte[] bytes = BitConverter.GetBytes(520);//然后写入文件之中fs.Write(bytes, 0, bytes.Length);//为了方便,字符串则应先写入字符串长度,知道指定内容后,再写入字符串byte[] contentBytes = Encoding.UTF8.GetBytes("字符串");byte[] lengthBytes = BitConverter.GetBytes(contentBytes.Length);//写入字符串长度 和 写入字符串fs.Write(lengthBytes, 0, lengthBytes.Length);fs.Write(contentBytes, 0, contentBytes.Length);}}

5.读取文件流中的字节

读取一般数据可以如下操作:

 

 //首先需要打开需要读取的文件using (FileStream fs = File.Open(Application.dataPath + "/Mydata.json", FileMode.Open)){//先试着将520读取出来byte[] readbytes = new byte[4];int index = fs.Read(readbytes,0, readbytes.Length);//查看一下返回值int number = BitConverter.ToInt32(readbytes,0);Debug.Log($"数字{number},索引到了{index}这个位置");//再试着将字符串读取出来}

            //再试着将字符串读取出来//先读取字符串长度byte[] readLengthbytes = new byte[4];fs.Read(readLengthbytes,0, readLengthbytes.Length);int contentLength = BitConverter.ToInt32(readLengthbytes, 0);Debug.Log("读取到的字符串长度为"+contentLength);//根据长度声明容器,再读取字符串内容byte[] contentBytes = new byte[contentLength];int index1 = fs.Read(contentBytes, 0, contentBytes.Length);string content = Encoding.UTF8.GetString(contentBytes);Debug.Log($"读到的字符串内容为 {content},索引到了{index1}这个位置");

在UTP-8中,一个中文字符串占3个字节 

 

这篇关于Unity数据持久化 之 向文件流读写(详细Plus版)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1136702

相关文章

批量导入txt数据到的redis过程

《批量导入txt数据到的redis过程》用户通过将Redis命令逐行写入txt文件,利用管道模式运行客户端,成功执行批量删除以Product*匹配的Key操作,提高了数据清理效率... 目录批量导入txt数据到Redisjs把redis命令按一条 一行写到txt中管道命令运行redis客户端成功了批量删除k

Python pandas库自学超详细教程

《Pythonpandas库自学超详细教程》文章介绍了Pandas库的基本功能、安装方法及核心操作,涵盖数据导入(CSV/Excel等)、数据结构(Series、DataFrame)、数据清洗、转换... 目录一、什么是Pandas库(1)、Pandas 应用(2)、Pandas 功能(3)、数据结构二、安

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Apache Ignite 与 Spring Boot 集成详细指南

《ApacheIgnite与SpringBoot集成详细指南》ApacheIgnite官方指南详解如何通过SpringBootStarter扩展实现自动配置,支持厚/轻客户端模式,简化Ign... 目录 一、背景:为什么需要这个集成? 二、两种集成方式(对应两种客户端模型) 三、方式一:自动配置 Thick

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

2025版mysql8.0.41 winx64 手动安装详细教程

《2025版mysql8.0.41winx64手动安装详细教程》本文指导Windows系统下MySQL安装配置,包含解压、设置环境变量、my.ini配置、初始化密码获取、服务安装与手动启动等步骤,... 目录一、下载安装包二、配置环境变量三、安装配置四、启动 mysql 服务,修改密码一、下载安装包安装地

在macOS上安装jenv管理JDK版本的详细步骤

《在macOS上安装jenv管理JDK版本的详细步骤》jEnv是一个命令行工具,正如它的官网所宣称的那样,它是来让你忘记怎么配置JAVA_HOME环境变量的神队友,:本文主要介绍在macOS上安装... 目录前言安装 jenv添加 JDK 版本到 jenv切换 JDK 版本总结前言China编程在开发 Java

Spring Boot Actuator应用监控与管理的详细步骤

《SpringBootActuator应用监控与管理的详细步骤》SpringBootActuator是SpringBoot的监控工具,提供健康检查、性能指标、日志管理等核心功能,支持自定义和扩展端... 目录一、 Spring Boot Actuator 概述二、 集成 Spring Boot Actuat