文章目录
1、什么是IO流?
就是文件的输入(Input)和输出(output);
输出和输出的参照物是内存,进入内存是输入,从内存里面出来是输出;
通过IO流可以完成硬盘文件的读写操作;
2、IO流的分类
按照流的方式分类
内存为参照物,进去内存叫做输入或者读;
从内存出来叫做输出或者写;
按照读取方式的不同分类
-
字节流:一次读取 8 个二进制位,就是一个 byte;(万能流)
-
字符流:为了读取普通的文本文件存在的,不能读取声音,图片,只能读取文本文件;(一个字符一个字符进行读取的)(“abc你好”,每一个都是一个字符)
综上所述:流的分类:输入流,输出流,字节流,字符流
3、Java中的IO流
内部已经实现,主要掌握语言中提供了什么流,每个流的相关特点是什么,每个流对象的特点是什么?
Java中所有流在 java.io.*下面;
Java中主要研究:
1、怎么new 流对象
2、调用流对象的哪儿个方法是读,哪儿个方法是写
3.1、Java IO流的四大家族
3.1.1 java.io.InputStream(字节输入流)
3.1.2 java.io.OutputStream(字节输出流)
3.1.3 java.io.Reader(字符输入流)
3.1.4 java.io.Writer(字符输出流)
3.1.5 上述小结
注意:
1、在 Java 中,只要是用 Stream 结尾的都是字节流;
2、使用“Reader/Writer”结尾的都是字符流;
3、上面的四大家族的首领都是抽象类(abstract class)
4、所有的流都是可以关闭的,都实现了 java.io.Closeable接口;
5、流是一个管道,是内存与硬盘之间的一个通道,使用结束后,需要关闭,否则会消耗过多的系统资源,好习惯,使用完流一定关闭;
6、所有的输出流是可以刷新的,都是有flush() 方法的,使用完输出流的时候,使用一下flush()方法,表示将管道/通道中剩余没有输出完的数据强行输出完成,刷新的作用就是清空管道,没有flush()可能使得数据丢失;
3.2 Java包中需要掌握的流 - 16个
文件专属
- java.io.FileInputStream
- java.io.FileOutputStream
- java.io.FileReader
- java.io.FileWriter
转换流(字节流转换为字符流)
- java.io.InputStreamReader
- java.io.OutputStreamWriter
缓冲流专属
- java.io.BufferReader
- java,io.BufferWriter
- java.io.BufferInputStream
- java.io.BufferOutputStream
数据流专属
- java.io.DataInputStream
- java.io.DataOutputStream
对象专属流
- java.io.ObjectInputStream
- java,io.ObjectOutputStream
标准输出流
- java.io.PrintWriter
- java.io.PrintStream