——- android培训、java培训、期待与您交流! ———-
一、概述
1、流的概念和作用
流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流.
流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作.
2、用来处理设备之间的数据传输
3、java对数据的操作是通过流的方式
4、JAVA用于操作流的对象都在IO包中
5、流栈操作数据分为两种:字节流和字符流
字节流的抽象基类:
inputstream 和 OutputStream;
字符流的抽象基类:
Reader 和 Writer
注:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。
如:InputStream的子类FileInputStream
Reader的子类FileReader
6、按流向分为 输入流输出流。
二、字节流和字符流的讲解
1、字符流的由来
因为数据编码的不同,,而有了对字符进行高效操作的流对象,本质其实就是基于字节流读取时去查了指定的编码表.字节流和字符流的区别:
读写单位不同: 字节流以字节(8bit)为单位,字符流以字符为单位没根据编码表映射字符,一次可能读多个字节.
处理对象不同: 字节流处理所有类型的数据(如图片,AV等等),而字符流只能处理字符类型的数据.
结论: 只要处理纯文本数据,就优先考虑使用字符流,除此之外都使用字节流.
(1)字符流的特点
既然IO流是用于操作数据的,数据的最基本的体现形式是文件。
需求:在硬盘上,创建一个文件,并写入一些文字数据。
用于操作操作文件的Writer的子类FileWriter,后缀名是父类名。前缀名是该流对象的功能。
操作步骤:
1.创建一个FileWriter对象。该对象一被初始化就必须明确要被操作的文件,该文件会被创建到指定目录下,如果该目录下已经有同名文件,将被覆盖
FileWriter fw=new FileWriter(“demo.txt”);
2.调用write方法,将字符串写入到流中。
fw.write();
3.刷新流对象中的缓冲中的数据,将数据刷到目的地
fw.flush();
4.关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据,将数据刷到目的地中。和flush的区别,flush刷新后,流可以继续使用,close刷新后
将会将流关闭。
fw.close();