Java之数据流、标准输出流、日志工具

一、数据流

1、DataOutputStream(数据字节输出流)

java.io.DataOutputStream数据专属的流

这个流可以将数据连同数据的类型一同写入文件。

注意:这个文件不是普通文本文档。(这个文档用记事本打不开)

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

public class DataOutputStreamTest {
    public static void main(String[] args) throws IOException {
        //创建数据专属的字节输出流
        DataOutputStream dos = new DataOutputStream(new FileOutputStream("data"));

        //写数据
        byte b = 100;
        short s = 200;
        int i = 300;
        long l = 400L;
        float f = 3.0F;
        double d =3.14;
        boolean sex = false;
        char c = 'a';

        //写
        dos.writeByte(b);
        dos.writeShort(s);
        dos.writeInt(i);
        dos.writeLong(l);
        dos.writeFloat(f);
        dos.writeDouble(d);
        dos.writeBoolean(sex);
        dos.writeChar(c);

        //刷新
        dos.flush();
        //关闭流
        dos.close();

    }
}

2、DataIuputStream(数据字节输入流)

DataOutputStream写的文件,只能使用DataIuputStream去读。并且读的时候你需要提前知道写入的顺序。
读的顺序需要和写的顺序一致,才可以正常取出数据。

import java.io.FileInputStream;
import java.io.DataInputStream;

public class DataInputStreamTest {
    public static void main(String[] args) throws Exception{
        DataInputStream dis = new DataInputStream(new FileInputStream("data"));

        byte b = dis.readByte();
        short s = dis.readShort();
        int i = dis.readInt();
        long l = dis.readLong();
        float f = dis.readFloat();
        double d =dis.readDouble();
        boolean sex = dis.readBoolean();
        char c = dis.readChar();

        System.out.println(b);
        System.out.println(s);
        System.out.println(i + 1000);
        System.out.println(l);
        System.out.println(f);
        System.out.println(d);
        System.out.println(sex);
        System.out.println(c);

    }
}

运行结果:
在这里插入图片描述

二、标准输出流(PrintStream和PrintWriter)

标准输出流不需要手动close()关闭

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

public class PrintStreamTest1 {
    public static void main(String[] args) throws Exception {
        //联合起来写
        System.out.println("hello World!");

        //分开写
        PrintStream ps = System.out;
        ps.println("hello zhangsan");
        ps.println("hello lisi");
        ps.println("hello wangwu");

        //标准输出流不需要手动close()关闭
        //可以改变标准输出流的输出方式吗? 可以

        //标准输出流不再指向控制台,指向“log”文件
        PrintStream printStream = new PrintStream(new FileOutputStream("log"));
        //修改输出方向,将输出方向修改到“log”文件。
        System.setOut(printStream);
        //再输出
        System.out.println("hello world");
        System.out.println("hello kitty");
        System.out.println("hello zhangsan");
    }
}

在这里插入图片描述
在这里插入图片描述

三、日志工具

日志工具logger类:

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.text.SimpleDateFormat;
import java.util.Date;

public class logger {
    /*
    日志工具
     */
    public static void log(String msg){
        try {
            //指向一个日志文件
            PrintStream out = new PrintStream(new FileOutputStream("log.txt",true));
            //改变输出方向
            System.setOut(out);
            //日期的当前时间
            Date nowTime = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:sss");
            String strTime = sdf.format(nowTime);

            System.out.println(strTime + ":" + msg);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

运行测试:

第一次运行

public class logerTest {
    public static void main(String[] args) {
        //测试日志工具
        logger.log("我非常喜欢这个记录日志的工具哦!");

    }
}

第二次运行

public class logerTest {
    public static void main(String[] args) {
        //测试日志工具
        logger.log("第二次哦");
        logger.log("调用了System类的gc方法,建议启动垃圾回收");
        logger.log("调用了UserService的doSome方法");
        logger.log("用户尝试进行登录,验证失败");
        logger.log("我非常喜欢这个记录日志的工具哦!");

    }
}

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值