5.24JavaIO数据流

5.24JavaIO数据流

DataInputStream&&DataOutputStream

作用:

特点:

  • 数据类型按顺序写入并且按顺序读出

DataOutputStream

特点:

  • 保存了数据类型写入到输出流当中,构造器需要一个字节流,内部要有一个最底层的节点流

  • 底层节点流

    • 1、File

    • 2、ByteArray

DataInputStream

特点:

  • 构造器放入输入流

  • 有大量的读取数据类型的方法

一个完整的IO流需要涉及的流
  • 一个节点流

  • 可有可无的装饰流--->加速读取数据类型

  • 需要转型的时候用到字节或字符流

DataIputStream和DataOutputStream的演示demo

package iostudy.data;

import java.io.*;

/**
* 数据流
* 1、先写出在读取--->先写出在读取
* 2、读取的顺序和写出的顺序一致
* @since JDK 1.8
* @date 2021/5/24
* @author Lucifer
*/
public class DataTest {
   public static void main(String[] args) throws IOException{
       //DataOutputStream--->保存了数据类型写入输出流当中--->构造器需要一个字节流,内部要有一个最底层的节点流
       /*
       底层节点流
       1、File
       2、ByteArray--->新增的方法toByteArray意味着不需要多态
       !!!任何数据都可以转成字节数组
        */
       //写出
       ByteArrayOutputStream baos = new ByteArrayOutputStream();
       DataOutputStream dos = new DataOutputStream(
               new BufferedOutputStream(
                       baos
              )
      );
       //操作数据类型 + 数据
       dos.writeUTF("我是真的帅");
       dos.writeInt(21);
       dos.writeBoolean(false);
       dos.writeChar('c');
       //刷新一下
       dos.flush();
       /*
       上面的操作是将那些数据类型的数据写入到字节数组缓冲流当中
        */
       //存放数据的字节数组
       byte[] datas = baos.toByteArray();

       //读取
       DataInputStream dis = new DataInputStream(
               //最外层装饰器
                   new BufferedInputStream(
                           new ByteArrayInputStream(
                                   datas
                          )
                  )
      );
       /*
       有里到外
       1、节点流
       2、节点数据类型转换流
       3、装饰流
        */
       //按照写入的数据类型读取
       String msg = dis.readUTF();
       int age = dis.readInt();
       boolean flag = dis.readBoolean();
       char ch = dis.readChar();
       System.out.println(msg);
  }
}

 

It's a lonely road!!!
原文地址:https://www.cnblogs.com/JunkingBoy/p/14812000.html