IO流
Java中IO流分为两种,字节流和字符流,顾名思义字节流就是按照字节来读取和写入的,字符刘是按照字符来存取的;常用的文件读取用的就是字符流,在网络通信里面用的就是字节流
下面这张图是Java中IO流的总体框架:
字节流
Java中字节流一般都是以stream结尾的,输入的字节流叫InputStream,输出字节流叫OutputStream;InputStream和OutputStream是表示自己输入/输出的所有类的超类,是抽象类(abstract)
常用的字节流有:
字符流
Java中输入字符流是以Reader结尾的,输出字符流是以Writer结尾的,比如我们常见的FileReader和FileWriter就是个字符流,Reader和Witer是输入/输出字符流的超类,也是抽象类
常用的字符流有:
转换流
转换流就是将字节流转换为字符流的类,有两种:
InputStreamReader是个字符流(Reader),需要包装一个字节流(InputStream);
OutputStreamWriter是个字符流(Writer),需要包装一个字节流(OutputStream)
包装(decorate)
包装的作用的就是在原始的对象的基础上增加新的功能,比如BufferedReader包装一个Reader,实际就是对Reader功能的增强;原始的Reader只能按照一个字符一个字符的读取,经过包装之后形成的BufferedReader就具有了新的功能:直接读取一行(readLine)的功能,直观上说这就是所谓的Decorate.
在设计模式上这就是典型的装饰模式,其特点是:
对应到我们上来就是,BufferedReader和Reader都是个Reader,通过包装之后BufferedReader功能增强,但是依然可以当做Reader来用(OO的父类引用可以指向子类)
例子
字节流的例子
将mp3文件切割成多份数,然后重新组合起来
字符流的例子
拷贝文件A变为文件B
打印流的例子
总结
以上就是本文关于Java中io流解析及代码实例的全部内容,希望对大家有所帮助。如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
原文链接:http://blog.csdn.net/gavin__zhou/article/details/52090071