java的IO流继承四大抽象类分别是字节流 inputStream outputStream与字符流 read write。怎么理解记忆很重要。
直接连接读写对象的是结点流,例如对文件读取字节类的名字就是FileInputStream,FileOutputStream,这个是字节流,因为后缀是Steam,字节流一次处理的是8位的Byte,我们知道频繁的读写硬盘会减少硬盘的寿命,加入我们要写如1M的数据,如果用这个类来写入的话就不好了。解决的办法是在字节流上套一个缓冲流。Buffered,用类BufferedOutputStream,
BufferedInputStream是带缓冲区的输入流,默认缓冲区大小是8M,能够减少访问磁盘的次数,提高文件读取性能;BufferedOutputStream是带缓冲区的输出流,能够提高文件的写入效率。BufferedInputStream与BufferedOutputStream分别是FilterInputStream类和FilterOutputStream类的子类,实现了装饰设计模式。
参考博客http://blog.csdn.net/liaisuo/article/details/39650087
这段话是抄袭别人的。
但是这样还是字节流,如果想转换成字符流就在FileInputStream 上套一个InputStreamRead将字节流转换成字符流之后在套上BufferedRead也是字符缓冲流。就可以用Readline(),来读取文件一整行的内容了。
http://xyiyy.iteye.com/blog/361476
system.in 是一个字节流,可以用InputStreamRead 转换成字符流,然后套上缓冲流BufferedRead就可以整行的读取键盘的输入内容了
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
另外要记住ByteArrayInputStream,结点流读取的是字节数组。
CharArrayReader看名字就知道了这是结点流不过是读取的字符数组。
java这部分类命名有很工整的对称性,注意记忆方式。