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

相关文章

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

如何在Mac上安装并配置JDK环境变量详细步骤

《如何在Mac上安装并配置JDK环境变量详细步骤》:本文主要介绍如何在Mac上安装并配置JDK环境变量详细步骤,包括下载JDK、安装JDK、配置环境变量、验证JDK配置以及可选地设置PowerSh... 目录步骤 1:下载JDK步骤 2:安装JDK步骤 3:配置环境变量1. 编辑~/.zshrc(对于zsh

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

SpringValidation数据校验之约束注解与分组校验方式

《SpringValidation数据校验之约束注解与分组校验方式》本文将深入探讨SpringValidation的核心功能,帮助开发者掌握约束注解的使用技巧和分组校验的高级应用,从而构建更加健壮和可... 目录引言一、Spring Validation基础架构1.1 jsR-380标准与Spring整合1

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

SpringBatch数据写入实现

《SpringBatch数据写入实现》SpringBatch通过ItemWriter接口及其丰富的实现,提供了强大的数据写入能力,本文主要介绍了SpringBatch数据写入实现,具有一定的参考价值,... 目录python引言一、ItemWriter核心概念二、数据库写入实现三、文件写入实现四、多目标写入

C++ vector的常见用法超详细讲解

《C++vector的常见用法超详细讲解》:本文主要介绍C++vector的常见用法,包括C++中vector容器的定义、初始化方法、访问元素、常用函数及其时间复杂度,通过代码介绍的非常详细,... 目录1、vector的定义2、vector常用初始化方法1、使编程用花括号直接赋值2、使用圆括号赋值3、ve

使用Python将JSON,XML和YAML数据写入Excel文件

《使用Python将JSON,XML和YAML数据写入Excel文件》JSON、XML和YAML作为主流结构化数据格式,因其层次化表达能力和跨平台兼容性,已成为系统间数据交换的通用载体,本文将介绍如何... 目录如何使用python写入数据到Excel工作表用Python导入jsON数据到Excel工作表用

Mysql如何将数据按照年月分组的统计

《Mysql如何将数据按照年月分组的统计》:本文主要介绍Mysql如何将数据按照年月分组的统计方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql将数据按照年月分组的统计要的效果方案总结Mysql将数据按照年月分组的统计要的效果方案① 使用 DA