I/O类 Reader BufferedReader 的使用

  1. java.io.BufferedReader和java.io.BufferedWriter类各拥有8192字符的缓冲区。当BufferedReader在读取文本文件时,会先尽量从文件中读入字符数据并置入缓冲区,而之后若使用read()方法,会先从缓冲区中进行读取。如果缓冲区数据不足,才会再从文件中读取,使用BufferedWriter时,写入的数据并不会先输出到目的地,而是先存储至缓冲区中。如果缓冲区中的数据满了,才会一次对目的地进行写出。

  2. 从标准输入流System.in中直接读取使用者输入时,使用者每输入一个字符,System.in就读取一个字符。为了能一次读取一行使用者的输入,使用了BufferedReader来对使用者输入的字符进行缓冲。readLine()方法会在读取到使用者的换行字符时,再一次将整行字符串传入。

  3. System.in是一个位流,为了转换为字符流,可使用InputStreamReader为其进行字符转换,然后再使用BufferedReader为其增加缓冲功能。例如:
    代码

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
//new 一个 reader 对象,在 new 的同时 BufferReader 开辟了一块缓存区,用以存储读到的数据;
//Java.io.BufferReader 类下方法 BufferedReader(Reader in) 内的参数为字符流格式,而 Java.lang.System.in 是一个字节流,所以要使用 InputStreamReader 将 System.in 转换成一个字符流;

String s = null;
//声明一个字符串 s 用以存放 reader 在终端上读取到的数据;

while(!(s = br.readLine()).equals("quit")){
            System.out.println("data:  " + s);
}
//br.readLine() 以行(可以理解为以换行符 \n 为标志)为单位对用户输入的数据进行读取;
//br.read 则是以字节
  1. 代码
package com.farsight.bj16081;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class BufferReaderDemon {

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

        // System 类, System.in  标准输入字节流 , System.out 标准输出流

        // 从终端读取字符串 , Reader
        BufferedReader  br = new BufferedReader(new InputStreamReader(System.in));

        // 创建一个文件流
        FileOutputStream  fos = new FileOutputStream("test.txt");

        // 向终端写数据
//      BufferedWriter  bw = new BufferedWriter(new OutputStreamWriter(System.out));

        // 向文件写数据
        BufferedWriter  bw = new BufferedWriter(new OutputStreamWriter(fos));


        // System.out.println("打印字符串:" + br.readLine());

        String s;

        while((s = br.readLine()) != null){
            //System.out.println("" + s);

            // 向终端输出, 或者向文件输出
            bw.write(s);
            bw.newLine();
            bw.flush();

            // 当遇到 quit 退出
            if(s.equals("quit")){
                break;
            }

        }

        br.close();
        bw.close();

        System.out.println("main exit...");

    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值