转载连接: http://blog.csdn.net/u013236878/article/details/52443157

目标:实现数据存储为二进制文件,然后通过二进制文件解析数据。

目标分为三个阶段:1、将数据结构转化为二进制(至于数据是怎样读取进来的这个就不说了,因为方式比较多,但是读取进来一定都会以特定的数据结构形式来保存)。2、加载二进制文本。3、加载为对应的数据结构。

阶段一:将数据结构转化为二进制有两种方式:1:利用C#的BinaryWrite,2:使用函数把数据转化成byte数组,然后在写入。

方法1:

[csharp] view plaincopy
  1. public bool SaveBinaryFile(string _path, string _name, TextAsset t){
  2. string content = t.text;
  3. //二进制文件流信息
  4. BinaryWriter bw = new BinaryWriter(new FileStream (_path + _name, FileMode.Create));;
  5. FileStream fs = new FileStream (_path + _name, FileMode.Create);
  6. try {
  7. bw = new BinaryWriter(new FileStream (_path + _name, FileMode.Create));
  8. }catch(IOException e){
  9. Debug.Log (e.Message);
  10. }
  11. try {
  12. bw.Write(content);
  13. }catch(IOException e){
  14. Debug.Log (e.Message);
  15. }
  16. debugInfo += "文件创建成功!\n";
  17. return true;
  18. }

说明:这种方法代码也没几行,方式也很好理解,我把过程封装成函数,传入路径和文件名即可(温馨提示:unity里面二进制存在StreamingAssets文件夹里面,若不懂可百度,有很多资源)。

为了让大家更好的理解我把路径贴出来:

[csharp] view plaincopy
  1. private string name = "1.bytes";
  2. public static readonly string path = Application.streamingAssetsPath + "/";

方法2:

[csharp] view plaincopy
  1. string path = Application.streamingAssetsPath + "/";
  2. string name = "2.bytes";
  3. int a = 15;
  4. byte[] b = BitConverter.GetBytes (a);
  5. File.WriteAllBytes (path + name, b);

说明:这种方法简单方便,利用 System.Text 下的BitConverter将其他类型的转化为二进制类型[特殊:不包括String类型的转化,string转化用Encoding.UTF8.GetBytes即可]。

这样阶段一就完成了。

阶段二:

加载二进制文本采用www加载,目前我知道唯一简单方便的加载方式,如果有更好的加载方式还请指教。

用www加载需要用到协程,如果对协程不是很懂的同学请自行查询(记得以前写过一篇但是没找到,有时间也会整理一篇)。下面是加载代码。

[csharp] view plaincopy
  1. IEnumerator wwwLoad(string _path, Action<byte[]> action){
  2. #if UNITY_EDITOR || UNITY_IOS
  3. _path = "file://" + _path;
  4. #endif
  5. WWW www = new WWW (_path);
  6. yield return www;
  7. action (www.bytes);
  8. }

注意点:下载的路径有所变化,详细了解可以去看看Unity的平台路径,因为与本文无关,不多说了。这里我用了回调,只是习惯,当然也可以等WWW下载完成后自行调用其他函数。

阶段三:使用BinaryReader类解析二进制文件

[csharp] view plaincopy
  1. public void readByte(byte[] b){
  2. using (BinaryReader br = new BinaryReader(new MemoryStream(b))){
  3. int f = br.ReadInt32 ();
  4. Debug.Log (f);
  5. }
  6. }

只需要使用使BinaryReader类中的函数来读取对一个类型的数据就可以了。

二进制文件操作-存储与读取相关推荐

  1. unity - 二进制文件操作-存储与读取

    转载连接: http://blog.csdn.net/u013236878/article/details/52443157?locationNum=4&fps=1 目标:实现数据存储为二进制 ...

  2. php如何从mongo获取视频文件,使用mongodb对文件(图片、音频、视频)的存储、读取操作...

    使用mongodb对文件(图片.音频.视频)的存储.读取操作 实现代码示例: package mongo.util; import java.io.File; import java.io.IOExc ...

  3. Android文件存储编程实验,Android编程中File文件常见存储与读取操作demo示例

    本文实例讲述了Android编程中File文件常见存储与读取操作.分享给大家供大家参考,具体如下: MainActivity文件代码如下: package example.com.myapplicat ...

  4. ESP32_学习笔记(一)NVS的操作(存储和读取大数组)(为什么存入数据成功,读取却为零的原因)

    目录 ESP32_学习笔记(一)NVS的操作 前言 函数介绍 创建句柄: 定义存储空间: 打开函数: 存储函数: 读取函数: 提交函数: 关闭函数: 易错点提醒:为什么明明存入了,读取的值为0 这就是 ...

  5. python numpy读取数据_numpy中以文本的方式存储以及读取数据方法

    这篇文章主要介绍了关于numpy中以文本的方式存储以及读取数据方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 Numpy中除了能够把数据以二进制文件的方式保存到文件中以外,还可以选 ...

  6. unity文件存储和读取

    原文地址:http://www.cnblogs.com/murongxiaopifu/p/4199541.html 前言: 一直有个想法,就是把工作中遇到的坑通过自己的深挖,总结成一套相同问题的解决方 ...

  7. 二进制文件操作,自己参考的

    http://wenku.baidu.com/view/0d2c78105f0e7cd184253641.html 如何将一串字符存储成二进制文件,而且如何读写? 问题补充: 我是菜鸟,请问你用的是不 ...

  8. C++格式化输出,文本文件操作,二进制文件操作

    1.格式化输入输出 以左对齐的方式输出整数,域宽为10: 打印有符号数和无符号数200: 将十进制整数200以0X开头的十六进制格式输出: 用前导*格式打印3.911,域宽为10 [提示] 可用ios ...

  9. python读二进制格点雷达基数据_对numpy中二进制格式的数据存储与读取方法详解...

    使用save可以实现对numpy数据的磁盘存储,存储的方式是二进制.查看使用说明,说明专门提到了是未经压缩的二进制形式.存储后的数据可以进行加载或者读取,通过使用load方法. In [81]:np. ...

最新文章

  1. HDFS之SequenceFile和MapFile
  2. C#方法中参数ref和out的解析
  3. 用 Flask 来写个轻博客 (23) — 应用 OAuth 来实现 Facebook 第三方登录
  4. 【深度学习】显卡价格一夜闪崩35%!30系降幅四千上热搜!可以出手了!
  5. 【深度学习】重大里程碑!VOLO屠榜CV任务,无需额外数据,首个超越87%的模型...
  6. springboot接口入参下划线转驼峰以及返回参数驼峰转下划线实现
  7. MySQL高级 - 复制 - 原理
  8. Android中关于dip和px以及转换的总结
  9. Android 百度地图之全局搜索周边搜索全国搜索城市路线规划(升级版附源码)
  10. ajax前端实时获取数据
  11. 通用 字符串工具类
  12. 送书 | Web前端性能优化
  13. 白帽子讲web安全读后感1
  14. 计算机软件专业如何选科,软件工程高中选什么科?附新高考软件工程专业选科要求...
  15. 固定链接设置朴素正常html无法显示,wordpress固定链接设置修改常见问题
  16. k8s(十三)、企业级docker仓库Harbor在kubernetes上搭建使用
  17. Dynamics CRM 365零基础入门学习(一)Dynamics介绍以及开发工具配置
  18. 求大神帮助 百练我爱北大,编程题目
  19. 笔记记录软件:NoteRecorder
  20. Excel 多列条件查找

热门文章

  1. 2022专转本计算机大类
  2. python unrar问题_Python-使用unrar库时Couldn't find path to unrar library的解决办法
  3. 【蓝桥杯】看完这些,还在担心自己拿不到奖?
  4. valgrnd调试详解
  5. 基于IE内核的一个WEB打印实现方案
  6. 3.2 发送请求参数
  7. 绕流运动与附面层基本概念
  8. java 获取指定日期的前几天或后几天
  9. 成都涌现大量网游业创业团队:从业人员近3万(网游亦可创业)
  10. python三维数据转换成二维_用Python生成马赛克画