数据字节流、标准输出流

本文介绍数据字节流DataInputStream、DataOutputStream和标准字节输出流PrintStream

1.数据字节流

数据字节流可以存储数据包括其数据类型,数据字节流的文件无法用记事本打开。

DataOutputStream写数据:

package com.dh.io;

import java.io.DataOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class DataOutputStream01 {

    public static void main(String[] args) {

        DataOutputStream dos = null;
        try {
            //数据流需要借助一个字节输出流来实例化对象
            FileOutputStream fos = new FileOutputStream("data");
            dos = new DataOutputStream(fos);

            byte b = 1;
            short s = 2;
            int i = 3;
            long l = 4L;
            float f = 5.5F;
            double d = 6.6;
            char c = '1';
            boolean bool = false;

            //数据和数据类型一同写入文件
            dos.writeByte(b);
            dos.writeShort(s);
            dos.writeInt(i);
            dos.writeLong(l);
            dos.writeFloat(f);
            dos.writeDouble(d);
            dos.writeChar(c);
            dos.writeBoolean(bool);

            dos.flush();


        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if(dos != null){
                try {
                    dos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }
}

DataInputStream读数据:

package com.dh.io;

import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class DataInputStream01 {

    public static void main(String[] args) {

        DataInputStream dis = null;
        try {
            FileInputStream fis = new FileInputStream("data");
            dis = new DataInputStream(fis);

            //必须要按照文件的顺序读
            System.out.println(dis.readByte());
            System.out.println(dis.readShort());
            System.out.println(dis.readInt());
            System.out.println(dis.readLong());
            System.out.println(dis.readFloat());
            System.out.println(dis.readDouble());
            System.out.println(dis.readChar());
            System.out.println(dis.readBoolean());

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if(dis != null){
                try {
                    dis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

结果:

1
2
3
4
5.5
6.6
1
false

可以看到数据流是比较麻烦的,所以使用的也较少。

2.标准输出流

主要是掌握改变输出流的输出方向,可以当日志工具。

package com.dh.io;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;

public class PrintStream01 {

    public static void main(String[] args) {
        //通过System系统类获得输出流对象
        PrintStream ps = System.out;
        //输出到控制台
        ps.println("hello");
        ps.println("world");
        ps.println("hello");
        ps.println("kitty");

        //标准输出流不需要关闭
        try {
            PrintStream stream = new PrintStream(new FileOutputStream("log.txt",true));
            //改变输出路径,以追加方式输出到Project根目录下的log.txt文本文件中
            System.setOut(stream);
            System.out.println("hello");
            System.out.println("world");
            System.out.println("hello");
            System.out.println("kitty");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}
posted @ 2021-01-28 21:38  deng-hui  阅读(162)  评论(0编辑  收藏  举报