java读取文件是把整个文件都加载到内存吗?

解决方案 »

  1.   

    那看你自己的需求咯,如果你要读来放到内存里面就放到内存里面,如果你读来直接打印那没必要放在内存里面,如果你读来只是为了把文件写到别的地方那也不用放到内存里面咯。当然你用read读出来的时候肯定是在内存里面的
      

  2.   

    我问的是很底层的问题, 比如内存只有2G但是我要读取的文件有4G这么大,那么我FileInputStream一个文件的时候是把整个文件都读取到内存里面还是其他的方法?如果不是, 那么站在程序员这个角度来说:有没有可能实际内存不够, 操作系统有用虚拟内存,或者如同网络流一样, 从头到尾,指针向前流动.那么也就是说我们不可以回退指针读取读过的东西,这个可能要要推回流来读取.
      

  3.   

    楼主的问题太犀利了,你打算是读取文件啊,还是拷贝文件啊? 你想一想:玩wow的时候内存不够2G就游戏都开不起来  ,要是 放电影的话,一个3G的电影 也能在内存1G的电脑上放出来,具体的你说的底层的东西,你应该找本专业的书或者专业的人员问问
      

  4.   

    2G是内存,4G是硬盘,可以比较么?
    再说读文件不是一下子把4G的文件读到内存里的,是逐字节读取的,没有任何问题
      

  5.   

    Java的FileInputStream等类里面都有自己的底层缓冲机制,不是全部读取到内存中再处理的。要读取全部文件到内存,可用考虑用内存映射
      

  6.   

    Java的FileInputStream等类里面都有自己的底层缓冲机制,不是全部读取到内存中再处理的。要读取全部文件到内存,可用考虑用内存映射