原 BinaryWriter和BinaryReader(二进制文件的读写)
原文 BinaryWriter和BinaryReader(二进制文件的读写)
C#的FileStream类提供了最原始的字节级上的文件读写功能,但我们习惯于对字符串操作,于是StreamWriter和 StreamReader类增强了FileStream,它让我们在字符串级别上操作文件,但有的时候我们还是需要在字节级上操作文件,却又不是一个字节 一个字节的操作,通常是2个、4个或8个字节这样操作,这便有了BinaryWriter和BinaryReader类,它们可以将一个字符或数字按指定 个数字节写入,也可以一次读取指定个数字节转为字符或数字。
1.BinaryWriter类
BinaryWriter类以二进制形式将基元类型写入流,并支持用特定的编码写入字符串。
常用的方法:
Close 关闭当前的BinaryWriter和基础流
Seek 设置当前流中的位置
Write 将值写入当前流
2.BinartReader类
BinartReader类用特定的编码将基元数据类型读作二进制值。
常用的方法:
Close 关闭当前阅读器及基础流
Read 从基础流中读取字符,并提升流的当前位置
ReadBytes 从当前流将count个字节读入字节数组,并使当前位置提升count个字节
ReadInt32 从当前流中读取4个字节有符号整数,并使流的当前位置提升4个字节
ReadString 从当前流读取一个字符串。字符串有长度前缀,一次7位地被编码为整数
下面看一个实例:
BinaryWriter 和 BinaryReader 类用于读取和写入数据,而不是字符串。
using UnityEngine; using System; using System.Text; using System.IO; using System.Collections; using System.Collections.Generic; public class FileOperator : MonoBehaviour { // Use this for initialization void Start () { WriteFile (); ReadFile(); } void ReadFile() // 读取文件 { FileStream fs = new FileStream ("D:\\MemoryStreamTest.txt", FileMode.Open, FileAccess.Read); BinaryReader r = new BinaryReader (fs); //以二进制方式读取文件中的内容 int i = r.ReadInt32 (); float f = r.ReadSingle (); double d = r.ReadDouble (); bool b = r.ReadBoolean (); string s = r.ReadString(); Debug.Log (i); Debug.Log (f); Debug.Log (d); Debug.Log (b); Debug.Log (s); r.Close (); fs.Close (); } void WriteFile() // 写入文件 { FileStream fs = new FileStream ("D:\\BinaryStreamTest.txt", FileMode.OpenOrCreate); BinaryWriter w = new BinaryWriter (fs); //以二进制方式向创建的文件中写入内容 w.Write (666); // 整型 w.Write (66.6f); // 浮点型 w.Write (6.66); // double型 w.Write(true); // 布尔型 w.Write ("六六六"); // 字符串型 w.Close (); fs.Close(); } }
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
椭圆曲线加密中的加法乘法浅析
本文不深入椭圆曲线加密算法的全部知识,只针对椭圆曲线加密中需要用到的加法和乘法计算规则进行浅析。 实际练习中碰到一个比较简单密码学的问题,但是涉及到了椭圆曲线加密算法,题目描述如下: 已知椭圆曲线加密Ep(a,b)参数为 p = 15424654874903 a = 16546484 b = 4548674875 G(6478678675,5636379357093) 私钥为 k = 546768 求公钥K(x,y) 提示:K=kG 这里需要介绍一下椭圆曲线 一般,椭圆曲线可以用以下二元三阶方程的形式来表示: y² = x³ + ax + b,其中a、b为系数。 它大概的几何形状如下图: 椭圆曲线.png 而本文要介绍的加法和乘法,就是基于这样一个奇怪的几何图形来做到的。 椭圆曲线加法(非有限域): 在椭圆曲线上取一点P(Xp,Yp),再取一点Q(Xq,Yq),连接P、Q两点作一条直线,这条直线将在椭圆曲线上交于第三点G,过G点作垂直于X轴的直线,将过椭圆曲线另一点R(一般是关于X轴对称的点),R点则被定义为P+Q的结果,既P+Q=R: P+Q=R 当P=Q的情况下,直线将是椭圆曲线在...
- 下一篇
【Java入门提高篇】Day18 Java容器类详解(一)Collection接口
今天来看看Java里的一个大家伙,那就是容器。 所谓容器,就是专门用来装对象的东西,如果你学过高数,没错,就跟里面说的集合是一个概念,就是一堆对象的集合体,但是集合类是容器类中的一个子集,为了区别表示,所以还是叫容器类,之后所说的集合类只是容器里的一个子集,之后会有详细介绍。 容器就是用来存放和管理其他类对象的地方,你可以把它理解为仓库管家,当你有东西需要存放和管理的时候,就要记得来找它。你也许会说,不是有数组吗?确实,用数组存放一堆相同类型对象也是一个不错的选择,但是有一个很大的缺陷,那就是数组大小只能是固定的,不能从数组里动态添加和删除一个对象,要扩容的时候,就只能新建一个数组然后把原来的对象全部复制到新的数组里,而且只能存放相同类型的对象,使用起来不够灵活。然而我们的管家就不一样了。 国际惯例,先来看一个栗子: public class Test { public static void main(String args[]){ //小明打算学Java,买了三本书 Book bookA = new Book("Java核心技术(卷一)", 88.9); Book bookB = ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS8编译安装MySQL8.0.19