递归火山软件开发平台

标题: 关于文件输入流操作 [打印本页]

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

(, 下载次数: 28)

还有下图"注意有可能小于所希望读入的字节数"
难道读不完整
(, 下载次数: 36)

作者: 李先森    时间: 2021-12-21 20:37
关于读取分批文件,这个问题困扰了一个礼拜了,各种流都试过了,实在搞不好了,特来提问
作者: 0晨鹤0    时间: 2021-12-21 22:27
本帖最后由 0晨鹤0 于 2021-12-21 22:32 编辑

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

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

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

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

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

直接用  读入数据2  方法就可以了。




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4