数据流分类:
按流向: 输入流和输出流
按传输单位: 字节流和字符流
按功能: 节点流和过滤流
Java中数据流有四个抽象父类: 输入方向 InputStream Reader
输出方向: OutputStream Writer
InputStream抽象类 用于数据输入,单位是字节 常用子类:FileInputStream 文件输入流 ObjectInputStream对象的输入流等
格式: FileInputStream input= new FileInputStream(new File("E:/cc.txt"));
OutputStream抽象类 用于数据输出,单位是字节 常用子类:FileOutputStream 文件输出流 ObjectOutputStream对象的输出流等
格式: FileOutputStream input= new FileOutputStream(new File("E:/cc.txt"));
Writer抽象类用于文件的写入,单位是字符 常用子类InputStreamWriter此子类比较特殊由于将字符串写入文件,传送过程中以字节为单位
通俗的讲 字符源-------->字节流--->文件 综上所述InputStreamWriter 字符流转换字节流类
Reader抽象类用于文件读取单位是字符, 常用子类OutPutStreamReader 此类读取文件时按字节读取,最终以字符的形式表现出来
即是: 字节流----->字符 综上所述OutPutStreamReader 字节流转换字符流类
两句话:
InputStreamReader需要和InputStream“套接”,它可以将字节流中读入的字
节解码成字符
•OutputStreamWriter需要和OutputStream“套接”,它可以将要写入字节流的
字符编码成字节
在是应用中,我们在操作文件/ 音像等他们往往有大量的数据流,显然无论是使用字
节流还是字符流都会花费很大的时间来完成,因此为了提高数据的传送效率采用过滤流方式.
过滤流相当于一数据传送缓冲区,对数据进行处理.需要说明的是过滤流的使用必须建立在字节流或字符流的基础上.
也就是说,他是对字节流或字符流修饰加工的类.
缓冲流是建立在相应的节点流之上,对读写的数据提供了缓冲的功能,提
高了读写的效率,还增加了一些新的方法。Java SE API提供四种缓冲流:
•BufferedInputStream 可以对任何的InputStream流进行包装
•BufferedOutputStream 可以对任何的OutputStream流进行包装
•BufferedReader 可以对任何的Reader流进行包装
•新增了readLine()方法用于一次读取一行字符串(‘\r’或‘\n’作为行结束)
•BufferedWriter 可以对任何的Writer流进行包装
•新增了newLine()方法用于写入一个行分隔符。
•注意:
•对于缓冲输出流,写出的数据会先缓存在内存缓冲区中,关闭此流前要用flush()方法
将缓存区的数据立刻写出。
•关闭过滤流时,会自动关闭过滤流所包装的所有底层流。