意识到识别了手柄运动方向后,需要记录下来每一帧的运动位置坐标,只有这样,才能进一步对轨迹围成的图形进行分析。那么,最方便的就是存成本地二进制文件。
于是学习了有关聊天记录的本地二进制存储的博客,只需要把其中的聊天记录的数据类换成位置坐标的数据结构就可以了。
储存为本地二进制文件的几种方式——
一、Stream::Write,Stream::WriteLine
这个方法是打开数据流就开始写字符串,可以指定长度写,也可以一行一行的写。具体参考http://blog.csdn.net/dingxiaowei2013/article/details/19084859和雨松大神的http://www.xuanyusong.com/archives/1069
这种方法最简单,一行一行的写,一行一行的读,都已String的形式写下来,可以中午可以英文。
缺点是不是二进制文件,不好做数据截断获取,比如你想把一个数据包保存下来,中间的各种数据需要你在字符串中写标记符进行切分。
二、[System.Serializable]标记,BinaryFormatter或xml写入
把自己的数据类型标记成可序列化数据二进制文件,用BinaryFormatter来进行写入读取操作。
这种方法也比较简单,数据按数据结构存放,数据不用做解析直接按数据结构使用
缺点是只能存放一个数据,每次写入读取都是一个数据,并不适合大多数情况
三、自己做数据解析,BinaryWriter写入
可以定义一个数据结构,这个结构里面的确定这个数据结构里的每个变量的数据类型,如果有字符串还需要获取字符串长度放在字符串前面
也就是一般网络传输的方式。
这种方法比较麻烦,需要自己定义数据结构和确定好每个数据结构的变量数据类型,字符串需要计算长度,但是这种方法可以适合任何场景。并且数据不需要换行只管一直写入,
而且这种方面解决上面两个方式的缺点
这个方法还有一个缺点是如果数据结构改了需要改读取和写入数据的方法。
因为想着写入本地序列化不只是我一个需求,需要可拓展性。
跟进上面这些我对类结构进行了一些安排
下面是代码和解释——
数据结构基类