一.IO流的概念
在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成;
二.常用IO流结构
IO流
│—————字节流
│ ├-InputStream (字节输入流)
│ │ ├-FileInputStream
│ │ └-BufferedInputStream
│ └-OutputStream (字节输出流)
│ ├-FileInputStream
│ └-BufferedOutputStream
│
└—————字符流
├-Reader(字符输入流)
│ ├-BufferedReader
│ └-InPutStreamReader
└-Writer (字符输出流)
├-BufferedWriter
└-InPutStreamWriter
三.字节流与字符流区别
字节流与字符流的区别就是读写的时候一个是按字节读写,一个是按字符。
字符流的底层就是字节流。而字符流主要是读取文本文件内容的,可以一个字符一个字符的读取,也可以一行一行的读取文本文件内容。而字节流读取单位为byte.byte作为计算机存储最基本单位,可以用字节流来读取很多其他格式的文件,比如图片视频等等。
四.字节流
1.字节输入流 (InputStream )
1)FileInputStream: 文件字节输入流:一切文件在系统中都是以字节的形式保存的,无论你是文档文件、视频文件、音频文件…,需要读取这些文件都可以用FileInputStream去读取其保存在存储介质(磁盘等)上的字节序列
1.创建FileInputStream对象,并指定文件
2.读
3.关闭资源
2)BufferedInputStream: 字节缓冲输入流:在读取数据量大的文件时,读取的速度会很慢,很影响我们程序的效率,这时候在Java中提供了一套缓冲流,提高读取文件的效率。
1.创建BufferedInputStream对象,传入一个FileInputStream对象,并指定文件
2.读
3.关闭资源
五.字符流
1.字符输入流 (Reader)
1)InPutStreamReader:字节转字符流:这个类是从字节流到字符流的桥接器:它使用指定的字符集读取字节并将它们解码为字符。
1.创建InPutStreamReader对象,传入一个FileInputStream对象,并指定文件
2.读
3.关闭资源
2)BufferedReader:字符缓冲流:从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。 可以指定缓冲区的大小,或者课使用默认的大小。
1.创建BufferedReader对象,传入一个InPutStreamReader对象,并指定文件
2.读
3.关闭资源