递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 5011|回复: 4
打印 上一主题 下一主题

[安卓] 关于文件输入流操作

[复制链接]

55

主题

313

帖子

2480

积分

金牌会员

Rank: 6Rank: 6

积分
2480
QQ
跳转到指定楼层
楼主
发表于 2021-12-21 20:34:36 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
关于输入流的操作理解:
比如有一个100字节的文件,每次读取8字节
第一次读取应该从0开始
文件读取.读取数据(临时数组,起始位置,每次读取长度,空对象)
起始位置=起始位置+每次读取长度
第二次应该从8开始读取吧???
为什么第二次读取 程序会无响应闪退
难道不是这样理解的吗???



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

回复

使用道具 举报

55

主题

313

帖子

2480

积分

金牌会员

Rank: 6Rank: 6

积分
2480
QQ
沙发
 楼主| 发表于 2021-12-21 20:37:48 | 只看该作者
关于读取分批文件,这个问题困扰了一个礼拜了,各种流都试过了,实在搞不好了,特来提问
回复

使用道具 举报

3

主题

134

帖子

2368

积分

金牌会员

Rank: 6Rank: 6

积分
2368
板凳
发表于 2021-12-21 22:27:07 | 只看该作者
本帖最后由 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.

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

使用道具 举报

55

主题

313

帖子

2480

积分

金牌会员

Rank: 6Rank: 6

积分
2480
QQ
地板
 楼主| 发表于 2021-12-22 07:46:15 来自手机 | 只看该作者
0晨鹤0 发表于 2021-12-21 22:27
你理解错了。起始位置指的不是从哪开始读取文件,而是把读取的内容放到结果数组的哪里。
文件流的读取是单 ...

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

使用道具 举报

445

主题

1万

帖子

4万

积分

超级版主

Rank: 8Rank: 8

积分
40612
5#
发表于 2021-12-23 11:24:29 | 只看该作者
李先森 发表于 2021-12-22 07:46
原来如此,那他这个注释有点误导性啊,或者说,尤其是一些关键字,比如,“欲”,“所” ...

直接用  读入数据2  方法就可以了。
安卓无障碍实战课:点击查看
交流群:641526939
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-28 22:23 , Processed in 0.083723 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表