FileStream的Read中的offset为什么只能从0开始
答案:1 悬赏:80 手机版
解决时间 2021-11-17 05:20
- 提问者网友:佞臣
- 2021-11-16 17:48
FileStream的Read中的offset为什么只能从0开始
最佳答案
- 五星知识达人网友:玩家
- 2021-11-16 18:12
1、FileStream 继承自 Stream。
Stream 表示逗流地(这个概念在计算机中非常常见,题主可以自行搜索相关资料),本质上是一种字节序列。说穿了,计算机只认识0和1,那么这么丰富多彩的文本、音乐、视频,归根结底都是转换成字节存储在内存与硬盘中的。
Stream 对象有一个属性 Length,表示这个流的长度;还有一个属性 Position,表示这个流当前的位置。
Stream.Read(byte[] array, int offset, int count);
array 表示缓冲区;offset 表示从流的当前位置(也就上面说的 Position)偏移多少个字节开始读;count 表示读取多少个字节。该方法返回的是实际上读取了多少个字节(永远小于等于 count),如果该值等于 0,说明已经到流的末尾了。读取之后,这个流的 Position 就会发生变化。
为什么要缓冲区看因为一个流很可能非常大,一次性的加载是不现实的,所以需要分块来读取,存储每个分块的这个字节数组就叫做逗缓冲区地。
2、底层调用的是 kernel32.dll 中的 Windows API 方法 ReadFile()
Stream 表示逗流地(这个概念在计算机中非常常见,题主可以自行搜索相关资料),本质上是一种字节序列。说穿了,计算机只认识0和1,那么这么丰富多彩的文本、音乐、视频,归根结底都是转换成字节存储在内存与硬盘中的。
Stream 对象有一个属性 Length,表示这个流的长度;还有一个属性 Position,表示这个流当前的位置。
Stream.Read(byte[] array, int offset, int count);
array 表示缓冲区;offset 表示从流的当前位置(也就上面说的 Position)偏移多少个字节开始读;count 表示读取多少个字节。该方法返回的是实际上读取了多少个字节(永远小于等于 count),如果该值等于 0,说明已经到流的末尾了。读取之后,这个流的 Position 就会发生变化。
为什么要缓冲区看因为一个流很可能非常大,一次性的加载是不现实的,所以需要分块来读取,存储每个分块的这个字节数组就叫做逗缓冲区地。
2、底层调用的是 kernel32.dll 中的 Windows API 方法 ReadFile()
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯