就是这么说吧,我打个比方
一个人要把水龙头流出来的水弄到水缸里面去,要是没有缓冲池,每流出一滴水,你都要跑两趟水龙头与缸之间的距离(这个在传文件的时候就是磁盘读写的时间),而当你有一个缓冲池(比如盆),你可以等盆满了再把水弄过去(这之间你可以做其他的事,在JAVA中,你就是CPU)……
所以有缓冲区的话,你可以节省CPU的大量时间,而且可以对缓冲区中的数据进行集中读写,这样不必每来一个数据你去到磁道上搜索地址,然后再回来接受数据,再去搜索地址存取数据,再回来接受数据。
缓冲区的大小根据你的用户的上传文件的大小设置,一般取平均值,这个要经验的。注意:缓冲区大小不是上传文件的平均值大小……累死了,打这么多字,睡觉咯
个人观点,仅供参考。
jvm虚拟机大小是在启动时设置的,如果你读取的文件过大,容易导致内存溢出,好比你查询数据库,十万级的数据查询出来你存储在集合中可以,百万级的如果你设置的虚拟机内存不够大的话程序会直接当掉,按字节去写文件能保证内存中的数据大小控制在一定范围内,保证质量也能保证速度。
当然是要抛异常的
instanceof关键字是有使用前提的
要求instanceof前一个操作数的编译时类型是后一个操作数的类型的父类,或者和她相同
请参考