3-6 读写二进制文件
3-4 读写二进制文件
二进制文件
英文:Binary files - 包含在 ASCII 及扩展 ASCII 字符中编写的数据或程序指令的文件。计算机文件基本上分为二种:二进制文件和 ASCII(也称纯文本)文件,图形文件及文字处理程序等计算机程序都属于二进制文件。这些文件含有特殊的格式及计算机代码。ASCII 则是可以用任何文字处理程序阅读的简单文本文件。
从本质上来说他们之间没有什么区别,因为他们在硬盘上都有一种的存放方式--二进制,但是如果要对他们有些区分的话,那可以这样理解。我们现在的每个字符由一个或多个字节组成,每个字节都是用的-128—127之间的部分数值来表示的,也就是说,-128——127之间还有一些数据没有对应任何字符的任何字节。如果一个文件中的每个字节的内容都是可以表示成字符的数据,我们就可以称这个文件为文本文件,可见,文本文件只是二进制文件中的一种特例,为了与文本文件相区别,人们又把除了文本文件以外的文件称为二进制文件,由于很难严格区分文本文件和二进制文件的概念,所以我们可以简单地认为,如果一个文件专门用于存储文本字符的数据,没有包含字符以外的其他数据,我们就称之为文本文件,除此之外的文件就是二进制文件。
|
<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />
3-4-1 二进制文件读取器/编写器介绍
FileStream filestream = new FileStream(Filename, FileMode.Create);
BinaryWriter objBinaryWriter = new BinaryWriter(filestream);
|
方法
|
说明
|
Close()
|
关闭当前阅读器及基础流。
|
Read()
|
已重载。 从基础流中读取字符,并提升流的当前位置。
|
ReadDecimal()
|
从当前流中读取十进制数值,并将该流的当前位置提升十六个字节。
|
ReadByte()
|
从当前流中读取下一个字节,并使流的当前位置提升1个字节。
|
ReadInt16()
|
从当前流中读取2字节有符号整数,并使流的当前位置提升2个字节。
|
ReadInt32()
|
从当前流中读取4字节有符号整数,并使流的当前位置提升4个字节。
|
ReadString()
|
从当前流中读取一个字符串。字符串有长度前缀,一次7位地被编码为整数。
|
using System;
using System.IO;
class BinaryRW
{
static void Main()
{
int i = 0;
char[] invalidPathChars = Path.InvalidPathChars;
MemoryStream memStream = new MemoryStream();
BinaryWriter binWriter = new BinaryWriter(memStream);
// 写入内存
binWriter.Write("Invalid file path characters are: ");
for (i = 0; i < invalidPathChars.Length; i++)
{
binWriter.Write(invalidPathChars[i]);
}
// 用作生成编写器的内存流同样作为生成读取器的内存流
BinaryReader binReader = new BinaryReader(memStream);
// 设置流的起点
memStream.Position = 0;
// 从内存中读取数据,并把数据写入控制台
Console.Write(binReader.ReadString());
char[] memoryData = new char[memStream.Length - memStream.Position];
for (i = 0; i < memoryData.Length; i++)
{
memoryData[i] = Convert.ToChar(binReader.Read());
}
Console.WriteLine(memoryData);
}
}
|
方法
|
说明
|
Close()
|
关闭当前的 BinaryWriter 和基础流。
|
Flush()
|
清理当前编写器的所有缓冲区,使所有缓冲数据写入基础设备。
|
Write()
|
已重载。 将值写入当前流。
|
using System;
using System.IO;
class BinaryRW
{
static void Main()
{
using (BinaryWriter binWriter = new BinaryWriter(File.Open(fileName, FileMode.Create)))
{
binWriter.Write(aspectRatio);
binWriter.Write(lookupDir);
binWriter.Write(autoSaveTime);
binWriter.Write(showStatusBar);
}
}
}
|
转载于:https://blog.51cto.com/qianshao/210969
3-6 读写二进制文件相关推荐
- R语言读写二进制文件:WriteBin()、readBin()
R语言读写二进制文件:WriteBin().readBin() 目录 R语言读写二进制文件:WriteBin().readBin() WriteBin()和readBin()语法
- python读写二进制文件(读写字节数据)
python读写二进制文件(读写字节数据) 你想读写二进制文件,比如图片,声音文件等就是常见的二进制文件. 使用模式为 rb 或 wb 的 open() 函数来读取或写入二进制数据.比如: # Rea ...
- 一种C#读写二进制文件的通用方法
在日常的工作中,我们经常需要进行一些二进制文件或协议的读写操作,用C#解析二进制文件常常是一件比较麻烦且容易出错的工作,本文介绍了一种在C#中实现快速读写二进制文件通用的方法. 以一个解析Mp3 ID ...
- python读写二进制文件的方法
本文实例讲述了python读写二进制文件的方法.分享给大家供大家参考.具体如下: 初学python,现在要读一个二进制文件,查找doc只发现 file提供了一个read和write函数,而且读写的都是 ...
- QT学习:读写二进制文件
使用QDataStream读写二进制文件. 具体用法见如下代码: (1)头文件"mainwindow.h"的具体代码如下: #include <QMainWindow> ...
- Java读写二进制文件
import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io ...
- C++实现对象序列化和反序列化(读写二进制文件)操作
相关函数介绍 在我们的C语言中读写二进制文件一般使用的fread.fwrite全局函数,当然也可以使用更底层的read和write函数.在我们的C++中 通过ofstream 和 ifstream 对 ...
- Python+pickle读写二进制文件小案例
对于二进制文件,不能使用记事本或其他文本编辑软件进行正常读写,也无法通过Python的文件对象直接读取和理解二进制文件的内容.必须正确理解二进制文件结构和序列化规则,才能准确地理解二进制文件内容并且设 ...
- python二进制写入文件_python读写二进制文件的方法
本文实例讲述了python读写二进制文件的方法.分享给大家供大家参考.具体如下: 初学python,现在要读一个二进制文件,查找doc只发现 file提供了一个read和write函数,而且读写的都是 ...
最新文章
- 网页连接不上java服务端,用Java插入IP时无法连接到服务器
- onTouchEvent
- docker 安装git_docker随手笔记第十二节 jenkins+docker+nginx+纯静态页面配置
- 键盘录入一个正整数,把它的各个位上的数字倒着排列形成一个新的整数并输出。 例如:12345 数出54321 78760 输出6787(0省去)
- xcode配置最新版opencv
- java merge_java – OptimisticLockException当使用JPA merge()
- 使用Kibana画图展示Nginx日志报表
- Leetcode—6.相向双指针的剩余题型python解答
- [asp.net mvc 奇淫巧技] 06 - 也许你的项目同一个用户的请求都是同步的
- Memcache与Redis的区别
- STM32G474 CANFD 用例详解
- 宅霸java_宅霸游戏联机平台下载|宅霸游戏联机平台免费版下载 v4.5.0 官方版_小皮网...
- Hibernate实战——Enumerated注解
- Mapbox使用之glyphs(字体符号)
- 在键盘上怎么点出来上下居中的点?
- MySQL中show命令用法大全
- 高并发解决方案 超详细!!!
- Keil5安装和使用小记
- 基于ARM核心板实现的BMS可行性方案
- Python识别璇玑图中诗的数量
热门文章
- 2019年浙大计算机专业前景,2019年浙大计算机专业一志愿录取.pdf
- 地图上制作线路的动画_R制作动画地图
- 微擎自动回复 加粉丝名_如何一天加100个精准粉丝?蒋老师告诉你系统的套路和方法...
- gdc服务器系统备份和还原,FANUC镜像系统如何备份及恢复
- 1.简述计算机硬盘如何保养,电脑硬盘的保养知识
- mysql客户端新建一个表_MySQL 建库、建用户及建表事项
- 贝叶斯集锦:从MC、MC到MCMC
- python 整数对应的字符,在Python中将字符串从字母解密为整数映射
- 汇编学习--7.16--int指令
- 三百行python代码的项目_300行Python代码打造实用接口测试框架