假如FileInputStream 读入文件a,读五次,在内存中,会占用一个a文件大小的空间,还是占用5个文件大小的空间。

解决方案 »

  1.   

    什么叫读5次?
    你没理解流是什么吧?
    流只是一个通道,流的数据是存储到你建立的byte数组中的
    也就是一般说的缓冲区
    读写文件并不是说一次性把文件读到内存的,先找点基础的书看看吧
      

  2.   

    看你的buffer怎么弄的。如果覆盖就只一个内存区。如果每次都新开buffer就5个内存区
      

  3.   

    就是在一个函数中abc()中有FileInputStream 读入文件a,main()调用abc五次,那么在内存中,会占用5个文件大小的空间还是一个?请各位讲清楚,谢谢。
      

  4.   

    那就看abc()的返回值变量是否是同一个变量/地址
    如果缓冲区是一个则读在多次也只是重复覆盖n次
    如果连续调用多次,放到不同的变量中,那就是不同的空间
      

  5.   

    a在内存中只占用1个,main函数调用a则要开5个内存,不过当你读入完了a之后,内存就自动释放了,所以每一次都只占用一个,但每一次开的内存可能不同(都是新开的),所以我又说占有5个
      

  6.   

    就是在一个函数中abc()中有FileInputStream 读入文件a,main()调用abc五次,那么在内存中,会占用5个文件大小的空间还是一个?
      

  7.   

    看jvm怎么弄了,一般OS有文件缓存
    反正写java的总比我们聪明
      

  8.   

    It All Depends On Your Method!
    文件的内容不一定都在内存里边,如果文件很大,当心MemoryOutFlow!
    读入文件A,内存里边关于文件A的内容可以只是一个ByteArray bytes[1024]...
    读一点,就写一点吗,一次吃那么多,不太好消化的...
    全部读入有必要吗?
    如果文件A的大小为xM,不管读几次,内存里边一个byte[1024],足够用了
      

  9.   

    你打开多个FileInputStream并调用a方法的时候,FileInputStream自身只是占用非常小的内存空间如果你将读取出来的数据用数组等方法保存起来的时候,占用空间的是你的数组,FileInputStream本身并不占用大量空间
    所以你的问题的答案是:打开多个FileInputStream对象只会占用非常小的空间,但是你将数据读取出来才占用大量空间,至于占用一份还多份,看你自己写的代码决定
      

  10.   

    大家对读取文件时,由于文件过大造成内存溢出有概念吗? 
    我发了另外一个帖子:http://topic.csdn.net/u/20091225/14/ed282276-7646-4a36-86dc-f55d65a5ab79.html