1,流是一组有顺序的,有起点和重点的字节集合,是对数据传输的总称和抽象。即数据在两个设备之间的传输称作流。流的本质就是数据传输,根据数据传输的特性,将流抽象为各种累,方便直观的进行数据操作。
2,根据处理数据类型不同,分为字符流、字节流
根据数据流向不同,分为输入流、输出流
3,因为数据的编码不同,从而有了对字符进行高效操作的流对象,即字符流,它的本质就是基于字节流读取时,去查了知道的码表
字节流与字符流区别:
读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读取多个字节
处理对象不同:字节流能处理所有类型的数据(图片、avi等),字符流只能处理字符类型的数据
所以,只要处理纯文本数据,应优先考虑使用字符流,除此之外都应使用字节流
4,对于输入流是读操作,对于输出流是写操作
5,输入字节流InputStream
所有输入流的父类,是一个抽象类
ByteArrayInputStream基本的流介质,从byte数组读取文件
StringBufferInpputStream基本的流介质,从StringBuffer中读取数据
FileInputStream基本的流介质,从本地文件中读取数据
PipedInputStream是从与其他线程共用的管道中读取数据
6,输出字节流OutPutStream
所有输出字节流的父类,是一个抽象类
ByteArrayOutputStream基本的流介质,向byte数组写入数据
FileOutputStream基本的流介质,向本地文件中写入数据
PipedOutputStream向与其他线程共用的管道中写入数据
7,字符输入流Reader
所有输入字符流的父类,是一个抽象类
charReader、StringReader是两种基本的介质流,它们分别从char数组,String中读取数据
pipedReader是从与其他线程共用的管道中读取数据
InputStreamReader是连接字节流和字符流的桥梁,它将字节流转变为字符流。FileReader是一个到达此功能常用的工具类,在其源代码中明显使用了将FileInputStream转变为Reader的方法
8,字符输出流Writer
所有输出字符流的父类,是一个抽象类
charArrayWriter、StringWriter两种基本的介质流,分别向Char数组,String中写入数据。
pipedWirter向与其他线程共用的管道中写入数据
BufferedWriter是一个装饰器,为writer提供缓冲功能
OutputStreamWriter是OutputStream到Writer转换的桥梁,它的子类FileWriter是实现此功能的工具类。
9,字符流与字节流转换
转换流的特点
字符流和字节流直接的桥梁
可对读取到的字节数据经过知道编码转换为字符
可对读取到的字符数据经过知道编码转换成字节
具体对象体现
InputStreamReader:字节到字符的桥梁
OutputStreamWriter:字符到字节的桥梁
这两个流对象时字符体系中的成员,他们又有转换作用,所以构造的时候需要传入字节流对象
10,File类
使用对象的思想来操作文件和文件夹,保存文件或目录的元数据信息,如文件名、文件长度、最后修改时间、是否可读、获取当前文件路径名、判断文件是否存在、获取当前目录文件列表、创建、删除文件和目录等方法
原文:https://www.cnblogs.com/javadongx/p/java_io.html