本来不想写这个专题的文章,看到许多大神的博客介绍都特别详细,一篇文章总结了IO里所有的知识点,非常全面。 比如这一篇:
http://www.cnblogs.com/rollenholt/archive/2011/09/11/2173787.html但是对于我这种初学者来说,实在看不下去,我还是自己一节一节的总结吧!
IO简述
IO,顾名思义Input和Output。
常见的输入输出设备如下:
- 输入设备:麦克风,扫描器,键盘,鼠标
- 输出设备:显示器,打印机,投影仪,耳机
IO流的分类
角度不同,分类方式不同:
- 根据流向:输出流和输入流
- 根据数据单位:字节流和字符流
根据功能不同:节点流和包装流
IO家族
四大基流
分类 | 字节流 | 字符流 |
---|---|---|
输出流 | OutputStream | Writer |
输入流 | InputStream | Reader |
- 四大基流都是抽象类,所以不能创建四大基流的对象,只能创建其子类的对象,其他流都继承于这四大基流。
操作IO流的模板
1.创建源或目标对象
2.创建IO流对象
3.具体的IO操作
- 输入流—read()方法
- 输出流—write()方法
4.关闭资源(close()方法)
统称为:读进来,写出去
下面引用一段话:
关于字节流和字符流的区别
实际上字节流在操作的时候本身是不会用到缓冲区的,是文件本身的直接操作的,但是字符流在操作的
时候下后是会用到缓冲区的,是通过缓冲区来操作文件的。读者可以试着将上面的字节流和字符流的程序的最后一行关闭文件的代码注释掉,然后运行程序看看。你就会发现使用字节流的话,文件中已经存在内容,但是使用字符流的时候,文件中还是没有内容的,这个时候就要刷新缓冲区。
使用字节流好还是字符流好呢?
答案是字节流。首先因为硬盘上的所有文件都是以字节的形式进行传输或者保存的,包括图片等内容。但是字符只是在内存中才会形成的,所以在开发中,字节流使用广泛。