李先森 发表于 2021-12-21 20:34:36

关于文件输入流操作

关于输入流的操作理解:
比如有一个100字节的文件,每次读取8字节
第一次读取应该从0开始
文件读取.读取数据(临时数组,起始位置,每次读取长度,空对象)
起始位置=起始位置+每次读取长度
第二次应该从8开始读取吧???
为什么第二次读取 程序会无响应闪退
难道不是这样理解的吗???



还有下图"注意有可能小于所希望读入的字节数"
难道读不完整

李先森 发表于 2021-12-21 20:37:48

关于读取分批文件,这个问题困扰了一个礼拜了,各种流都试过了,实在搞不好了,特来提问

0晨鹤0 发表于 2021-12-21 22:27:07

本帖最后由 0晨鹤0 于 2021-12-21 22:32 编辑

你理解错了。起始位置指的不是从哪开始读取文件,而是把读取的内容放到结果数组的哪里。
文件流的读取是单向的,每一次读取会自动从上一次读取结束的地方开始。不需要你手动计算,也无法手动干预。
举个例子:文件内容:123456789
结果数组A大小为5,第一次读取,起始位置传2,读取长度传3。结果就是A, A 内容保持不变。A=1, A=2, A=3。

下一次读取,起始位置传0,读取长度传2,结果就是 A=4, A=5。A~A 依然是 1 2 3.

顺便吐槽一下,这个名字翻译的太有误导性了。严重怀疑当时封装人员自己都搞错了。翻译成“欲保存位置”,或者“保存偏移”,要好得多。

李先森 发表于 2021-12-22 07:46:15

0晨鹤0 发表于 2021-12-21 22:27
你理解错了。起始位置指的不是从哪开始读取文件,而是把读取的内容放到结果数组的哪里。
文件流的读取是单 ...

原来如此,那他这个注释有点误导性啊,或者说,尤其是一些关键字,比如,“欲”,“所”

创世魂 发表于 2021-12-23 11:24:29

李先森 发表于 2021-12-22 07:46
原来如此,那他这个注释有点误导性啊,或者说,尤其是一些关键字,比如,“欲”,“所” ...

直接用读入数据2方法就可以了。
页: [1]
查看完整版本: 关于文件输入流操作