java io流是将数据全部加载在内存的流对象里才开始读的吗?
3个回答
展开全部
是的,但你说的不全。读取有俩种方式,一种是直接读取,一种是先放在缓冲流中,再一并读取。内存只是个中转站,在第一种方式中,数据是先加载在内存区,然后又被马上被读取出去。在第二种方式中,它会有个缓冲区,其实也就是个可以重用的内存区,它是先读取完放在缓冲区,然后一并读取出去!
追问
数据是先加载在内存区,然后又被马上被读取出去?
加载数据不是相当于已开始读取,放在申请的变量里吗?
又被马上读取出去(你是指交给CPU处理吗?)
其实就是想知道:
当实例化:一个流对象时,是不是还没读取,只是指定在哪个地方读而已
然后当调用read方法时,才开始读,此时数据才加载在内存区?
是不是先建立缓冲区流对象,才会放在缓冲区?
如果没有建立,是否就是读一个字节访问一次硬盘?
追答
你的理解是对的。当我们读取数据时,数据才会加载到内存区等待CPU处理,但不管是哪种方式,读取数据时都是每读取一个字节访问一次硬盘。俩种方式所不同的是,直接读取是每读取一个字节,都要等待CPU处理一次,缓冲读取是首先都读取到缓冲区,CPU只要一次就可以处理完。
是不是先建立缓冲区流对象,才会放在缓冲区? 那是必须的,不然CPU会知道吗?呵呵
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询