使用C#的读文件操作代码如下:
using (FileStream input = File.OpenRead("binarydata.dat"))
using (BinaryReader reader = new BinaryReader(input))
{
int intRead = reader.ReadInt32();
byte[] byteRead = reader.ReadBytes(4);
string stringRead = reader.ReadString();
char charRead = reader.ReadChar();
}
其中的ReadString()方法并没有参数告诉它字符串内有多少个字符,它是怎么自动判断的呢?
查阅了MSDN帮助,里面这个方法的说明是这样的
从当前流中读取一个字符串。字符串有长度前缀,一次 7 位地被编码为整数。
说字符串有长度前缀,没没见到这个前缀啊?请大神指导
关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率

已采纳
C# BinaryReader.ReadString()方法如何确定从数据流中读多少内容
收起
- 写回答
- 好问题 0 提建议
- 关注问题
微信扫一扫
点击复制链接分享
- 邀请回答
- 编辑 收藏 删除 结题
- 收藏 举报
3条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
普通网友 2015-05-26 18:50关注BinaryWriter.Write(string)会先把字符串的(UTF8编码字节串)**长度**写入,长度用的是"可变长编码",因此可能有1/2/3/4等字节不等。
用于长度的每个字节只用7个比特,最高位用来表示是否有后续长度字节。这样作可以节省空间,比如128以内只要用一个字节来表示长度:
00000101, 最高位零,因此长度为5。
10000001, 00000011, 第一个字节的最高位为1,表示后续字节也要用,用两个字节来表示长度为 1 * 128 + 3 = 131。本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 7无用举报微信扫一扫
点击复制链接分享
编辑预览轻敲空格完成输入- 显示为
- 卡片
- 标题
- 链接
评论按下Enter换行,Ctrl+Enter发表内容
编辑
预览

轻敲空格完成输入
- 显示为
- 卡片
- 标题
- 链接
报告相同问题?
提交
- 2022-09-21 14:32会敲键盘的肘子的博客 本文主要介绍System.IO命名空间的BinaryReader 类,介绍其常用的方法和示例说明。
- 2021-03-07 08:1913142ads的博客 C# BinaryReader类用于从流中读取二进制信息。它在System.IO命名空间中定义。它还支持在特定编码中读取字符串。C# BinaryReader示例我们来看看使用BinaryReader类从dat类型文件读取数据的简单例子。using System;...
- 2017-07-18 01:53成魔的羔羊的博客 C#使用BinaryReader类读取二进制文件 BinaryReader类用来读取二进制数据,其读取数据的方法很多,常用方法如下: Close():关闭BinaryReader对象; Read():从指定流读取数据,并将指针迁移,...
- 2022-10-14 02:07小龙在山东的博客 BinaryReader和BinaryWriter可以读写二进制文件。
- 2022-03-12 07:18WilhelmLiu的博客 C# 文件流(FileStream)类 文件流(FileStream)类,是用来实现对文件的读取和写入。FileStream是操作字节的字节数组,当提供向文件读取和写入字节的方法时,常用StreamReader类或StreamWriter类来完成,它们是操作...
- 2012-07-19 14:41在C#编程中,二进制读写操作是处理数据流的一种重要技术,尤其是在需要存储或传输原始字节数据时。二进制读写器(BinaryReader和BinaryWriter)是.NET框架提供的一对类,用于从流中读取和向流中写入基本类型的数据。...
- 2024-04-29 02:08一介学徒的博客 读写文件和目录时可使用简单的API,也可使用先进的API提供更多的功能;使用,可以压缩数据,并且利用内存映射的文件和管道在不同的任务间共享数据;
- 2017-10-06 08:28腾讯AI架构师的博客 C#编程中数据流的使用一直不很熟练,没有一个系统的认识,但是它的重要性显然不言而喻。System.IO下的Stream类是所有数据流的基类,当我们对数据进行逐字节操作时,首先需要将数据转换为数据流。C#数据流主要分为...
- 2019-03-03 07:13Allen Su的博客 一:BinaryReader 介绍。 二:BinaryWriter 介绍。 三:为什么要使用 BinaryReader 和 BinaryWriter 类。
- 2025-01-07 01:43路飞VS草帽的博客 C# 使用BinaryWriter和BinaryReader 及示例
- 2024-08-14 17:19白骑士所长的博客 在现代编程中,处理文件和数据流是必不可少的一部分。C# 提供了一套丰富的 API 来处理文件与目录操作、数据流与二进制文件处理...在本节中,我们将深入探讨这些内容,帮助您掌握如何在 C# 中高效地操作文件和数据流。
- 2019-06-26 09:42Mr.Emiya的博客 FileStream 类为我们提供了字节级上的文件读写功能,但开发中我们习惯于对字符串操作,于是 StreamReader 和 StreamWriter 类增强了 FileStream ,它让我们可以在字符串级别上操作文件。 可为什么会有 Bin...
- 鬼冢喜之郎的博客 与BinaryWriter类不同的是,BinaryReader是用特定的编码将基元数据类型读作二进制值。它的构造函数与BinaryWriter类一样,提供了两个重载的构造函数。public BinaryReader(Stream input);public BinaryReader(Stream...
- 2025-03-19 09:45墨夶的博客 现代数据处理就像"太空漫游":日志系统通过C#函数式编程实现:实时处理百万级日志文件 注释: 注释:实时处理网络数据流,确保...C#函数式数据流的三大核心原则:最后的话: 记住:附赠彩蛋: 用LINQ实现"流式分页":
- 2022-07-13 07:57DXB2021的博客 文件、数据流与注册表
- 2019-02-16 07:56ClementQL的博客 using (BinaryReader br = new BinaryReader(fs))//将文件流内容存放到BinaryReader的对象br中 { string result = br.ReadString(); msg = ""; long size = br.BaseStream.Length; msg = msg + "文件位置:" + ...
- 2019-10-17 05:48懒笔头的博客 在C#以二进制形式读取数据时使用的是 BinaryReader 类。 BinaryReader 类中提供的构造方法有 3 种,具体的语法形式如下。 第1种形式: BinaryReader(Stream input) //其中,input 参数是输入流。 第2种形式:...
- 2024-07-29 09:13Hi无涯教程的博客 C#BinaryReader类用于从流中读取二进制信息。它位于System.IO命名空间中。还支持以特定编码方式读取字符串。
- 没有解决我的问题, 去提问
联系我们(工作时间:8:30-22:00)
400-660-0108kefu@csdn.net在线客服
- 京ICP备19004658号
- 经营性网站备案信息
公安备案号11010502030143
- 营业执照
- 北京互联网违法和不良信息举报中心
- 家长监护
- 中国互联网举报中心
- 网络110报警服务
- Chrome商店下载
- 账号管理规范
- 版权与免责声明
- 版权申诉
- 出版物许可证
- ©1999-2025北京创新乐知网络技术有限公司