Java IO流 知识点

一、概念

  1. 流就是内存和存储设备之间传输数据的通道或是管道。数据转移的通道
  2. IO流的分类:
    (1)按照方向:【以JVM为参照物】
         a.输入流    b.输出流
    (2)按照单位:
      a.字节流:以字节为单位,可以操作任意类型的文件。
      b.字符流:以字符为单位,可以操作文本类型的文件。
        【注】:能用记事本打开并且不乱码的文件称之为 文本类型文件
    (3)按照功能:
      a.节点流:只具有基本的读写功能
      b.过滤流:在节点流的基础上增加功能

二、字节流

  1. 字节流父类(抽象类)
    (1)InputStream : 字节输入流父类,对应读操作(read)
    (2)OutputStream : 字节输出流父类,对应写操作(write)

  2. 字节节点流
    (1)FileOutputStream : 文件字节输出流
       常用构造方法:FileOutputStream fos = new FileOutputStream(“file/a.txt”,true);.
       常用方法:void write(int n) 每次写出一个字节的内容到文件中
    (2)FileInputStream:文件字节输入流
       常用构造方法:FileInputStream fis = new FileInputStream(“file/a.txt”);
       常用方法:int read(); 每次读取一个字节的内容到JVM中

  3. 字节过滤流
    (1)BufferedOutputStream / BufferedInputStream
       a.缓冲流,提高IO效率,减少访问磁盘的次数
       b.数据存储在缓冲区,可通过flush() 或close() 将缓冲区内容一次性写入文件中,并清空缓冲区。
        close可同时起关流作用。
        【注】如果过程中缓冲区已满,则自动将数据写出到文件中,并清空缓冲区。
    (2)PrintStream(输出流)
       a.缓冲流,提高IO写的效率。
       b.增强了操作基本数据类型的方法,同时还可以操作字符串
    (3)ObjectOutputStream/ObjectInputStream
       a.增强缓冲区,提高IO读写效率
       b.增强了操作8中基本数据类型方法
       c.对象序列化:【重点
         ①概念:对象放在流上进行传输的过程
         ②参与对象序列化的要求:参与对象序列化的对象的类需实现 java.io.Serializable 接口
          否则编译没问题,但运行时报错java.io.NotSerializableException(不可序列化的异常)
         ③对象的读写操作:
            void writeObject(Object obj)
            Object readObject()
         ④读入文件达到尾部标记:java.io.EOFException
         ⑤如果一个对象的某个属性不想参与对象序列化,则相应属性用 transient修饰
         ⑥参与对象序列化的对象的自定义属性或者集合中的元素均需实现java.io.Serializable接口,避免运行报错

  4. 关流
    (1)try{}-catch(){}-finally{}
    (2)try(){}-catch(){}

三、字符流

  1. 字符流的父类 【抽象类】
    Reader :字符输入流
    Writer :字符输出流

  2. 节点流
    (1)FileWriter:文件字符输出流
        a. void write( int a )
        b. void write( String s )
    (2)FileReader:文件字符输入流
        a. int read( )

  3. 过滤流
    (1)BufferedReader
        int read( ) :一次性读取一个字符内容,返回值类型为int,如果到达文件结尾返回-1.
        String readLine( ) :一次性读入一个文本行的内容,返回值类型为String,如果到达文件尾部返回null。
    (2)PrintWriter
         print() / pritnln()
         pritnln(Object obj):可将对象的toString方法的返回值写到文件中

  4. 桥转换流: InputStreamReader / OutputStreamWriter
    (1)作用:字节流转换为字符流的通道
    (2)特点:可设置编解码的方式
    (3)步骤:
          ①创建文件字节流作为基础流
          ②创建桥转换流,将字节流转换为字符流,同时可以设置编码或解码格式
          ③可包装过滤流,增强字符流的读写功能
          ④读写操作
          ⑤关流,最外层

四、File类 (java.io.File)

  1. File 和 IO 的区别
    (1)IO流:对文件内容直接操作,读文件或者写文件
    (2)File :代表一个文件或是文件夹(目录),利用File类中的一些方法对文件或者是文件夹进行操作。
  2. 常用方法:
    在这里插入图片描述
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值