IO流 续 处理流

处理流

缓冲流

  作用:增加缓冲区,提供效率

  类型

    BufferedInputStream

      包装InputStream

      例如:FileInputStream、DataInputStream、ObjectInputStream等

    BufferedOutputStream

      包装OutputStream

      例如:FileOutputStream、DataOutputStream、ObjectOutputStream等

    BufferedReader

      包装Reader  例如:FileReader、InputStreamReader等

      String readLine()  判断是否读完,使用 ==null

    BufferedWriter

      包装Writer  例如:FileWriter,OutputStreamWriter等

      write(String) + newLine()

    缓冲区的大小

      字节流  8192字节

      字符流  8192字符

数据流

  作用:可以处理Java的基本数据类型+字符串(UTF-8修改版)

  类型

    DataOutputStream

      writeXxx()   

        writeInt(int)

        writeDouble(double)

        writeChar(char)

        writeUTF(String)

    DataInputStream

      readXxx()

        int readInt()

        double readDouble()

        char readChar()

        String readUTF()

  注意

    (1)DataOutputStream写,用DataInputStream读取

    (2)写的顺序和读的顺序要一致  写与读之间需要配置文件等形式进行沟通顺序和类型

对象流

  作用:可以处理Java对象等

  类型

    ObjectOutputStream

      writeObject(Object)

      对象序列化

    ObjectInputStream

      Object  readObject()

      对象反序列化

  注意

    (1)凡是要序列化的对象,它的类型必须实现java.io.Serializable接口

      否则会报:NotSerializableExecption

    (2)如果属性涉及到其他的引用数据类型,那么这个类型也必须实现java.io.Serializable接口

    (3)如果某个属性不想要序列化,那么可以在属性之前加transient

      一旦加了这个关键字修饰,该属性的值会在序列化的过程中,被忽略

      一旦加了这个关键字修饰,该属性在反序列化的过程中,它的值就赋默认值

    (4)在实现java.io.Serializable接口时,最好加一个常量:序列化版本ID

      private static final long serialVersionUID = 1L;

    (5)静态的属性不能序列化

打印流

  作用:可以打印各种类型的数据,最终都是以字符的形式打印,如果是引用数据类型,就调用它的toString()

  类型

    PrintStream

      代表  System.out

      方法  print(xxx)  println(xxx)

    PrintWriter

      方法  print(xxx)  println(xxx)

NIO(了解)

Non - Blocking IO  非阻塞式IO

NIO和IO的区别

  区别一

    IO是面向流,是单向的,从某个流中要么只能读,要么只能写

    NIO是面向通道+缓冲区,即可以是单向的,又可以是双向的

  区别二

    IO是阻塞式的,一旦某个线程在读,此时没有可读的数据,会一直等待

    NIO是非阻塞式

  区别三

    NIO可以使用选择器

posted @ 2023-03-06 19:12  LuckySnail  阅读(32)  评论(0)    收藏  举报