java 比Scanner 更高效的输入输出 BufferedWriter和`OutputStreamWriter

     BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

当我们在 Java 中需要进行字符输出时,可以使用 BufferedWriterOutputStreamWriter 的组合来实现。下面提供更多相关信息:

  1. BufferedWriter

    • BufferedWriter 提供了缓冲区的功能,将字符数据写入缓冲区,然后批量写入底层输出流,减少了频繁的写入操作,提高了性能。

    • 它提供了一些便捷的写入方法,如 write(char[] cbuf)write(String str)newLine() 等,可以方便地进行字符数据的写入和换行操作。

    • 使用完毕后,应及时调用 flush() 方法将缓冲区的数据刷新到底层输出流,确保数据被完全写入。

  2. OutputStreamWriter

    • OutputStreamWriter 是一个字符流与字节流之间的转换器,将字节流转换为字符流。

    • 它可以指定字符编码,将字节流按照指定编码转换为字符流,以便正确地处理不同字符编码的数据。

    • 在构造方法中,可以传入一个字节输出流对象,如 System.out(标准输出流)或 FileOutputStream(文件输出流),将其转换为字符输出流。

    • 若不指定字符编码,默认使用平台的默认字符编码。

通过将 OutputStreamWriter 对象作为参数传递给 BufferedWriter 的构造方法,我们可以实现字符数据的输出,并通过缓冲区提高写入效率。

这种组合的优点是可以方便地进行字符输出,并通过缓冲区减少底层资源的频繁交互,提高性能。同时,由于 BufferedWriter 继承自 Writer 类,还可以使用 Writer 的其他方法来进行字符输出操作。

需要注意的是,在使用完毕后,应该及时关闭和释放相关资源。对于 BufferedWriterOutputStreamWriter,可以调用 close() 方法来关闭字符流,它们会自动关闭底层的输出流。

总结:BufferedWriterOutputStreamWriter 的组合提供了一种方便高效的方式来进行字符输出,允许我们写入字符数据并通过缓冲区提高性能。



import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.util.Scanner;

public class H {
    public static void main(String[] args) throws Exception{
        Scanner sc = new Scanner(System.in);
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int k = sc.nextInt();
        while(k-->0){
            int n = sc.nextInt();
            if(n==3){
                bw.write("Fak\n");
            }else {
                bw.write("Bingbong\n");
            }
        }
        bw.flush();//将缓冲区的数据刷新到底层输出流,确保数据被完全写入
        bw.close();//关闭字符流释放相关资源
    }
}

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值