传智播客之关于IO流课程--------培训总结与体会 今天是毕向东老师讲关于IO流的课程. 首先老师用一个形象的比喻引出了流的概念:水流.!在文件与程序之间连接一个管道,水流就出现了.水流的输入与输出都是针对程序而言的.水流出现了,自然也就有了方向。流进和流出。于是可以这样定义流:管道连接了文件和程序,水流在管道里流进流出。 然后老师用幻灯片里的图表展示了流之间的关系.主要是字符流和字节流,输入流和输出流.其中必须要记住的十个流是:FileInputStream/FileOutputStream 文件字节流 BufferedInputStream/BufferedOutputStream 带缓冲的输入/出流 FileReader/FileWriter 文件字符流,和FileInputStream/FileOutputStream 文件流, inputstreamreader/outputstreamwriter 字符转换流. 说完了流的概念和分类.开始查阅API文档。流中的类十分的多,老师要求我们必须在不查阅文档的情况下能熟练记住十个以上的方法。 老师在讲缓冲区的时候是通过对流的比喻又更加形象的添加了一些修饰内容。什么是缓冲区呢?就是在水流流动的时候让它先流进一个水池里,等水池里的水满了就把水池里的水放干净,然后再重新接水,让水流流进水池里。或者是比喻成一个杯子,用杯子接满水,再把水倒掉,然后继续接,知道把水接完。这个水池和杯子就是IO流中的缓冲区。有了缓冲区,能够大大提高程序的运行效率。为了对比程序有缓冲区与没有缓冲区的区别,老师特别举了很多例子叫我们写并体会。其中有代表性的一个例子就是MP3的拷贝。通过对一首歌曲的拷贝时间来比较用缓冲区与否的效果。这个例子拷贝一个MP3用了四种方法。1.自定义数组缓冲区;2.使用已定义的缓冲区;3.定义一个刚刚好的缓冲区;3.不使用缓冲区;其中的一种方法是建立一个自定义大小的byte数组对象来接受MP3 IO流,并通过该对象传递到目标文件中去;已定义的缓冲区就是BufferedInputStream和BufferedOutputStream对IO流进行包装传递;定义一个刚刚好的缓冲区,就是先计算文件的大小,然后在内容中用available()方法建立相同大小的缓冲区;不使用缓冲区就是让水自然流动,也就是让字节一个一个跳出来再一个一个蹦过去。其中,前两种方法比较好,使用时间非常短,第三种虽然使用时间也比较短,但是不建议经常使用,为什么呢。因为如果文件太大了。那么在定义相同大小的缓冲区的时候就容易因为内存不够用而导致内容溢出。所以不建议使用。而最后一个方法实在是太慢了。所以是不可取的。 通过毕老师对基本概念的形象讲解以及大量有针对性的练习之后我觉得对java相关知识点的理解深刻了许多。由于篇幅有限,以上我只列举了一小部分的课程内容,但是我觉得老师每一个知识点讲得都非常好,值得我们反复体会和深刻思索。说实在的,一天下来,如果不全力以赴去学习的话那真是跟不上的。放学后大家都不离开教室留下来练习,我不是计算机相关专业的,所以得更加努力才行啊。加油吧。