知识总结之IO流&flush方法和close方法的区别

目录

1. IO流

1.1 IO流简介

1.2 IO流的分类

1.3字符流和字节流的主要区别

1.4流的抽象父类/基类/超类

2.flush方法和close方法的区别

2.1 flush方法

2.2 close()方法

2.3字符流缓冲区


1. IO流

1.1 IO流简介

  • Java对数据的操作是通过IO流的方式。

  • 作用:IO流是用来处理设备和设备之间数据的传输问题。

1.2 IO流的分类

根据流动的方向分为:输入流和输出流。

根据处理数据的类型分为:

        字节流(每次处理1个字节,后缀是:Stream)和字符流(每次处理2个字节,后缀是:ReadWrite)

流的分类总结:

        

        字节读取流:FileInputStream fis = new  FileInputStream(new File("字节读取流"));

        包装类:BufferedInputStream bis = new  BufferedInputStream(fis); //要包装的字节读取流对象

        字节写入流:FileOutputStream fos = new  FileOutputStream(new File("字节写入了流"));

        包装类:BufferedOutputStream bos = new  BufferedOutputStream(fos); //要包装的字节写入流对象

        字符读取流:FileReader fr = new FileReader(new File("字符读取流"));

        包装类:BufferedReader br = new  BufferedReader(fr); //参数:要包装的字符读取流对象

        字符写入流:FileWriter fw = new FileWriter(new File("字符写入流"));

        包装类:BufferedWriter bw = new  BufferedWriter(fw); //参数:要包装的字符写入流对象

1.3字符流和字节流的主要区别

  • 字节流每次处理一个字节,它可以处理所有类型的数据。

  • 字符流每次处理两个字节,一般用它处理纯文本数据。

1.4流的抽象父类/基类/超类

字节流:

        字节读取流抽象父类-InputStream:

                public class FileInputStream extends InputStream{ }

        字节写入流抽象父类-OutputStream:

                public class FileOutputStream extends OutputStream{ }

字符流:

字符读取流抽象父类-Read

        publicclass FileReader extends  InputStreamReader {}

        publicclass InputStreamReader extends Reader {}

字符写入流抽象父类-Write:

        public class FileWriter extends OutputStreamWriter {}

        public class OutputStreamWriter extends  Writer {}

2.flush方法和close方法的区别

2.1 flush方法

  • 作用:刷新字符流字符缓冲区。
        flush
        
        public void flush()
                            throws IOException
                刷新该流的缓冲
                
                指定者:
                            接口  Flushable 中的  flush
                指定者:
                            类  Writer 中的 flush
                抛出:
                            IOException - 如果发生 I/O 错误
  • 我们在操作字符写入流的时候,flush方法只要一执行,数据就会被写入到目标文件里面。

2.2 close()方法

  • close方法可以关闭流,且在关闭流之前自动刷新流的缓冲区(但是只能刷新一次)。

  • 在close方法执行完成之后,不能再次执行write或者flush方法,否则会抛出:IOException 异常!

2.3字符流缓冲区

字符流缓冲区执行原理:

         1、如果是需要频繁的对文件进行读或者写操作,普通的流速度会比较慢,而缓冲流是在普通流的基础上多了一个缓冲区,系统会先把读或者写的数据放到缓冲区(默认缓冲区大小8000字节左右),当读或者写的数据达到一定量(缓冲区被装满),再自动往目标文件里面进行读写。

        2、如果当文件读取完的时候还没有装满缓冲区,那么这个时候已经读写到缓冲区的数据需要手动强制使其朝目标文件进行读写。这个手动强制的操作,就是执行flush方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值