No.18 基本数据类型写入流:DataInputStream/DataOutputStream

简介:

DataOutputStream数据输出流: 将java基本数据类型写入数据输出流中。
DataInputStream数据输入流:将DataOutputStream写入流中的数据读入。

这两个数据流分别FilterInputStream/FilterOutputStream的子类,顾名思义如同Buffer流一样,也是提高了写入和读出效率的。

DataOutputStream中write的方法重载:

  • 继承了字节流父类的两个方法:
    (1)void write(byte[] b,int off,int len);
    (2)void write(int b);//写入UTF数值,代表字符
    注意字节流基类不能直接写入string 需要先将String转化为getByte()转化为byte数组写入
  • 特有的指定基本数据类型写入:
    (1)void writeBoolean(boolean b);//将一个boolean值以1byte形式写入基本输出流。
    (2)void writeByte(int v);//将一个byte值以1byte值形式写入到基本输出流中。
    (3)void writeBytes(String s);//将字符串按字节顺序写入到基本输出流中。
    (4)void writeChar(int v);//将一个char值以2byte形式写入到基本输出流中。先写入高字节。写入的也是编码值;
    (5)void writeInt(int v);//将一个int值以4byte值形式写入到输出流中先写高字节。
    (6)void writeUTF(String str);//以机器无关的的方式用UTF-8修改版将一个字符串写到基本输出流。该方法先用writeShort写入两个字节表示后面的字节数。

DataInputStream中read方法重载:

  • 继承了字节流父类的方法:
    int read();
    int read(byte[] b);
    int read(byte[] buf,int off,int len);
  • 对应write方法的基本数据类型的读出:
    String readUTF();//读入一个已使用UTF-8修改版格式编码的字符串
    boolean readBoolean;
    int readInt();
    byte readByte();
    char readChar();

注意:

基本数据类型的写入流和输出流,必须保证以什么顺序按什么方式写入数据,就要按什么顺序什么方法读出数据,否则会导致乱码,或者异常产生。

列子:

public class Test {

public static void main(String[] args) {
    DataOutputStream dos = null;
    DataInputStream dis = null;
    try {
        //写入基本数据类型
        dos = new DataOutputStream(new FileOutputStream("d://dataTest.txt"));
        dos.writeUTF("你好呀,ok");
        dos.writeInt(18888);
        dos.writeLong(188888);
        dos.writeByte(123);
        dos.writeFloat(1.344f);
        dos.writeBoolean(true);
        dos.writeDouble(1.444444d);
        dos.writeChar(49);
        
        dos.flush();
        dos.close();
        //读出基本数据类型
        dis = new DataInputStream(new FileInputStream("d://dataTest.txt"));

        System.out.println(dis.readUTF());          
        System.out.println(dis.readInt());
        System.out.println(dis.readLong());
        System.out.println(dis.readByte());
        System.out.println(dis.readFloat());
        System.out.println(dis.readBoolean());
        System.out.println(dis.readDouble());
        System.out.println(dis.readChar());
        
        dis.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
  }
}

你可能感兴趣的:(No.18 基本数据类型写入流:DataInputStream/DataOutputStream)