Java学习2.24————io流(二)

一、缓冲流
自带缓冲区的流,也可称为包装流
缓冲流会将字节(字符)先写到一个缓冲区中,然后通过flush()或者关闭这个缓冲流来实现将缓冲流中的数据回显。

java.io.BufferedReader
java.io.BufferedWriter
java.io.BufferedInputStream
java.io.BufferedOutputStream

四种缓冲流使用方法差不多
缓冲流可以用方法直接读取,不用建立字节(字符)数组,底层效率不高,但代码编写效率高。
1、java.io.BufferedReader

public class IOTest03 {

    public static void main(String[] args) throws IOException {

        BufferedReader bufferedReader =null;
        //创建文件输入流
        try {
            FileReader fileReader = new FileReader("E:\\Temp\\io05.java");

            //BufferedReader 包装流
            //fileReader  属于节点流
            bufferedReader = new BufferedReader(fileReader);

            //读取一行
            String s1 = bufferedReader.readLine();


        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            bufferedReader.close();
        }


    }
}

2、java.io.BufferedWriter

public class IOTest04 {

    public static void main(String[] args) throws IOException {

        //创建缓冲流对象
        BufferedWriter bufferedWriter =
                new BufferedWriter(new OutputStreamWriter(new FileOutputStream("io01.txt")));

        //完成数据的写入
        bufferedWriter.write("你好,柿子");

        
        //关闭流
        bufferedWriter.close();

    }
}

二、数据流
在写文件时(DataOutputStream),是以加密的形式写入,普通记事本打不开,写入文件时,会连同数据的数据类型一起写入。
在读文件时,只能采用DataInputStream去读取

java.io.DataInputStream
java.io.DataOutputStream

1、java.io.DataInputStream

public class IOTest05 {

    public static void main(String[] args) throws IOException {

        //创建数据流对象
        DataOutputStream dataOutputStream = new DataOutputStream(new FileOutputStream("io02.txt"));

        //写入数据时一定要连同数据的数据类型一起写入
        int i = 10;

        char c = 'h';

        dataOutputStream.writeInt(i);

        dataOutputStream.writeChar(c);

        dataOutputStream.flush();

        dataOutputStream.close();
    }
}

2、java.io.DataOutputStream

public class IOTest06 {

    public static void main(String[] args) throws Exception {

        DataInputStream dataInputStream = new DataInputStream(new FileInputStream("io02.txt"));

        int i = dataInputStream.readInt();

        char c = dataInputStream.readChar();

        System.out.println(i);

        System.out.println(c);

        dataInputStream.close();
    }
}

三、标准输出流
PrintWriter
PrintStream
字节流和字符流对应的标准输出流使用方法相同。
作用:控制台打印、日志记录

控制台打印实际上采用的就是标准输出流

 System.out.println("你好,柿子");

        PrintStream out = System.out;
        out.println("你好,柿子");

采用标准输出流完成日志记录的话,第一步,改变标准输出流的输出方向,标准输出流会默认打印在控制台上,默认输出路径是控制台。
PrintStream

public class IOTest07 {

    public static void main(String[] args) throws Exception {

        PrintStream printStream = new PrintStream(new FileOutputStream("io03.txt"));

        //更改输出方向  更改为硬盘上的文件
        System.setOut(printStream);

        System.out.println("你好,柿子");
        
    }
}

创建日志工具类

/**
 * 根据标准输出流创建日志工具类
 */
public class LoggerUtil {

    //私有化构造方法
    private LoggerUtil(){
    }

    //记录日志的方法
    public static void Logger(String message){
        //创建标注输出流对象
        try {
            //创建标注输出流对象
            PrintStream printStream = new PrintStream(new FileOutputStream("logger",true));

            //设置输出方向
            System.setOut(printStream);

            Date date = new Date();

            //日期格式化
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

            //将日期转换为字符串
            String dateTime = simpleDateFormat.format(date);

            System.out.println(dateTime+" "+message);

        } catch (FileNotFoundException e) {

            e.printStackTrace();
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值