Java中的输入输出操作是由Stream(流)来实现的。这个C#,C++这些OO语言是一样的。
Stream是一种很形象的说法。数据在进行IO操作时就像水一样 由这一端流向另一端。 我们在API Docs中可以看到java.io包里面有许多这样名称以Stream结尾的流类。
文件复制源文件














































这里有一个问题,CPU处理速度远大于IO速度,以上程序中CPU每处理一个字节就要进行一次IO操作,这样降低了系统效率,而且过于频繁的IO操作对外存储器是一种严峻的考验。所以引入buffer缓冲区是很有必要的。缓冲区就是一段内存空间,当读入Stream时,并没有直接对其进行处理,而是先把Stream数据放入buffer中,等到buffer满后或是进行flush操作再一次性进行处理。这样就大大减少了IO操作的次数。我们在API Docs看到的Buffered开头的Stream类就是带缓冲区Buffer的类。
改造后的代码:
















































