InputStream is = new FileInputStream("D:\\study\\myeclipse-8.6.0-win32.exe");
OutputStream os = new FileOutputStream("D:\\study\\my.exe");
byte[] b = new byte[100];
int c;
while((c=is.read(b))!=-1){
   os.write(b,0,c);
}
is.close();
os.close();
请问调用这个read()的时候是怎么执行的?   可以理解成读取txt文件一样读一个字节,就调用一次吗?
如果 b=100 就是一下读取文件100个字节吗?   读完100个字节在调用read()吗?  还是读一个字节调用一次?   

解决方案 »

  1.   

    既然你声明了b是字节数组,那么就一次读100个字节。计算机读文件的方法你可以理解成当执行read方法一次,文件指针就偏移一次,直到读取文件结束。
      

  2.   

     理论上是会一次读取 数组b长度那么多个字节。 但是如果b的长度申明得太大,有可能造成内存不够。  这是一个 用空间换速度的做法。一次读取b数组长度那么多个字节,减少了IO的操作,提高了效率。但是占内存就大了。