java io流是将数据全部加载在内存的流对象里才开始读的吗?

 我来答
孤星0617
2012-03-24
知道答主
回答量:81
采纳率:0%
帮助的人:30.6万
展开全部
是的,但你说的不全。读取有俩种方式,一种是直接读取,一种是先放在缓冲流中,再一并读取。内存只是个中转站,在第一种方式中,数据是先加载在内存区,然后又被马上被读取出去。在第二种方式中,它会有个缓冲区,其实也就是个可以重用的内存区,它是先读取完放在缓冲区,然后一并读取出去!
追问
数据是先加载在内存区,然后又被马上被读取出去?
加载数据不是相当于已开始读取,放在申请的变量里吗?
又被马上读取出去(你是指交给CPU处理吗?)

其实就是想知道:
当实例化:一个流对象时,是不是还没读取,只是指定在哪个地方读而已
然后当调用read方法时,才开始读,此时数据才加载在内存区?
是不是先建立缓冲区流对象,才会放在缓冲区?
如果没有建立,是否就是读一个字节访问一次硬盘?
追答
你的理解是对的。当我们读取数据时,数据才会加载到内存区等待CPU处理,但不管是哪种方式,读取数据时都是每读取一个字节访问一次硬盘。俩种方式所不同的是,直接读取是每读取一个字节,都要等待CPU处理一次,缓冲读取是首先都读取到缓冲区,CPU只要一次就可以处理完。
是不是先建立缓冲区流对象,才会放在缓冲区? 那是必须的,不然CPU会知道吗?呵呵
361010911
2012-03-21 · TA获得超过230个赞
知道答主
回答量:178
采纳率:0%
帮助的人:59.4万
展开全部
看你怎么操作! 一般是边读边写的.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Irreappearable
2012-03-19 · TA获得超过4956个赞
知道大有可为答主
回答量:1423
采纳率:25%
帮助的人:3143万
展开全部
应该不是吧
你可以试试读取一个1G的文件,就读一个字符。看看这个程序会花很长时间,还是瞬间完成
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式