缓冲的意思就是说你调用read()时,可能读取一个字节,但JAVA程序本身和文件的交互则不是这样的,在你读第一个字节的时候,JAVA程序其实从文件中已经读取了一定数量的字节(默认好像是8K),所以你在读第二个字节的时候,实际上已经不用再通过I/O从文件中读了;
通过减少与文件的I/O操作(如果文件全部加载到内存中,则需要与其它操作系统进程交互,如果没有,则需通过操作系统与磁盘交互),从而提高了读取效率;
如果你用过缓冲的write()时就会有体会,比如你用buffer,当你写了一百个字节时,程序突然崩溃,这时你去文件中查看,可能只有几个字节;
但如果不用buffer的话,即使突然崩溃,你写了多少,文件中就有多少;
当然,buffer也有一个flush的方法,就是手动强制将buffer的内容立即写入文件;
通过减少与文件的I/O操作(如果文件全部加载到内存中,则需要与其它操作系统进程交互,如果没有,则需通过操作系统与磁盘交互),从而提高了读取效率;
如果你用过缓冲的write()时就会有体会,比如你用buffer,当你写了一百个字节时,程序突然崩溃,这时你去文件中查看,可能只有几个字节;
但如果不用buffer的话,即使突然崩溃,你写了多少,文件中就有多少;
当然,buffer也有一个flush的方法,就是手动强制将buffer的内容立即写入文件;