Java IO原理
I/O是input和output的缩写。I/O是非常使用的技术,用于处理设备之间的数据传输。如读写及网络通讯等。
Java程序中,对于数据的输入输出操作以“流(stream)”的方式进行
java.io包下提供了各种“流”类的接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据
输入input:读取外部数据(磁盘,光盘等存储设备的数据)到程序(内存)中
输出output:将程序(内存)数据输出到磁盘,光盘等存储设备中
流的分类
按操作数据单位不同分为:字节流(8bit),字符流(16bit)
---- 图片,视频…比较适合用字节流,字符流比较适合用在文本上
按数据流的流向不同分为:输入流,输出流
按流的角色不同分为:节点流,处理流
----在已有的“流”上包上的一层流(处理流)
抽象基类 | 字节流 | 字符流 |
---|---|---|
输出流 | InputStream | Reader |
输入流 | OutPutStream | Writer |
Java中IO流共涉及40多个流,实际上非常规范,都是从如上4个抽象基类派生的。
由这四个基类派生出来的子类名称都是以其父类名作为子类名后缀。
(上面背景为深色的是比较重要的)
抽象基类 | 节点流(或文件流) | 缓冲流(处理流的一种) |
---|---|---|
InputStream | FileInputStream | BufferedInputStream |
OutputStream | FileOutputStream | BufferedOutputStream |
Reader | FileReader | BufferedReader |
Writer | FileWriter | BufferedWriter |
第二行时作用与文件上的,所以都是节点流。