c# - 是否可以检测 BinaryReader.ReadBytes(int) 是否到达流的末尾?
问题描述
大多数BinaryReader
的 read 方法都会抛出一个EndOfStreamException
if 它到达流的末尾,但奇怪的是该ReadBytes
方法没有。但是,如果我仍然想扔一个EndOfStreamException
怎么办?我该如何检测?
我可以使用该BaseStream.Position
属性,但我使用的蒸汽不支持搜索,所以这会抛出一个NotSupportedException
.
解决方案
我在输入我的问题时找到了答案。事实证明,如果到达流的末尾,该方法只返回一个较短的数组。所以这就是你可以检测它的方法:
byte[] bytes = binaryReader.ReadBytes(someNumber);
if (bytes.Length != someNumber)
throw new EndOfStreamException(); // Or do something else.
推荐阅读
- java - 幂等Kafka生产者回调
- python - 在 Raspbian 中启动后如何启动 python 脚本?
- postgresql - AWS Postgres 设置 pg_trgm.word_similarity_threshold
- gradle - 通过 Nexus 下载 Gradle 构建请求额外的“/gradle/plugin”目录
- node.js - 如何对谷歌助手 dialogflow fullfilment 进行单元测试
- python - 嵌套for循环中的python数组
- powershell - Powershell - 替换“()”之间的所有内容
- ios - 使用 Alamofire 多部分表单数据 iOS Swift 发送文件或图像
- epicorerp - Epicor - ABL 导出到 excel
- php - 在imagemagick中将图像尺寸更改为4:3而不裁剪图像