I/O流学习笔记

时间:2023-02-14 23:58:20

数据流分类:

按流向:             输入流和输出流

按传输单位:     字节流和字符流

按功能:             节点流和过滤流

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()方法
将缓存区的数据立刻写出。
•关闭过滤流时,会自动关闭过滤流所包装的所有底层流。