Java IO学习笔记(一)

时间:2023-02-25 21:11:57

一、概念

流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。在两设备间的传输的数据称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,以进行数据操作。

二、流分类

数据类型:字符流和字节流

流方向:输入流和输出流

字节流和字符流区别:

读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。

处理对象不同:字节流能处理所有类型的数据(如图片、rmvb等),字符流只能处理字符类型的数据。

处理纯文本数据,优先使用字符流,此外都使用字节流。

输入流和输出流:

对输入流只能进行读操作,对输出流只能进行写操作。

三、Java IO流对象

InputStream:所有输入字节流的父类。ByteArrayInputStream、StringBufferInputStream、FileInputStream是三种基本的介质流,分别从Byte数组、StringBuffer、本地文件中读取数据。

OutputStream:所有输出字节流的父类。ByteArrayOutputStream、FileOutputStream是两种基本的介质流,它们分别向Byte 数组、本地文件中写入数据。

Reader:所有的输入字符流的父类。CharReader、StringReader是两种基本的介质流,它们分别将Char数组、String中读取数据。

Writer:是所有的输出字符流的父类。CharArrayWriter、StringWriter是两种基本的介质流,它们分别向Cha 数组、String中写入数据。

 

字符流与字节流转换:

1、转换流的特点

转换流是字符流和字节流之间的桥梁

将读取到的字节数据经过指定编码转换成字符

将读取到的字符数据经过指定编码转换成字节

2、何时使用转换流

当字节和字符之间有转换动作时

流操作的数据需要编码或解码时

3、具体的对象体现

InputStreamReader:字节流转换为字符流的桥梁,其子类FileReader就是实现此功能的具体类。

OutputStreamWriter:字符流转换为字节流的桥梁,其子类FileWriter就是实现此功能的具体类。

这两个流对象是字符体系中的成员,具有转换作用,自身又是字符流,所以在构造的时需传入字节流对象。

四、File类

File类保存文件或目录的各种元数据信息,包括文件名、文件长度、最后修改时间、是否可读、获取当前文件的路径名,判断指定文件是否存在、获得当前目录中的文件列表,创建、删除文件和目录等方法。