Reader(字符流读取)

Reader(字符流读取)

java.io.Reader 是一个抽象类, 只能用来操作文本文件

Reader常用实现类的继承关系

  • java.lang.Object
    • java.io.Reader
      • java.io.InputStreamReader
        • java.io.FileReader
      • java.io.BufferedReader

常用子类就是FileReader和 BufferedReader

Reader共性方法(子类通用)

返回值 方法 说明
abstract void close() 关闭并释放流
int read() 读取单个字符
int read(char[] cbuf) 将字符读入数组。
abstract int read(char[] cbuf, int off, int len) 将字符读入数组的某一部分。
int read(CharBuffer target) 试图将字符读入指定的字符缓冲区。

FileReader子类

用于读取字符流。读取字符文件的便捷类。

构造方法

方法 说明
FileReader(File file) 传入一个File对象
FileReader(String filePath) 传入一个文件路径字符串

使用实例:

try {
    // 1. 创建对象
    String path = "D:\DEV\eclipse\workspace\day13\testIO.txt";
    Reader in = new FileReader(path);
    // 第二种创建方式
    // Reader in = new FileReader(new File(path));
    // 2. 开始读取
    int b = 0;
    while ((b = in.read()) != -1) {
        System.out.println(b);
    }
    // 3. 释放
    in.close();
} catch (IOException e) {
    e.printStackTrace();
}

BufferedReader子类

从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。可以指定缓冲区的大小,或者可使用默认的大小。

构造方法

方法 说明
BufferedReader(Reader in) 一般传入一个FileReader对象

特有方法

返回值 方法 说明
String readLine() 读取一行

使用实例:

FileInputStream fis = new FileInputStream("src/day08/BRDemo.java");
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);

 /*
 * BufferedReader提供了按行读取方法:
 * String readLine()
 * 连续读取若干字符,直到读取到换行符为止
 * 并将换行符之间读取到的字符以一个字符串返回
 * 若返回值为NULL,则表示读取到末尾。
 * 注意:该字符串不包含最后的换行符。
 * 
 */
String line = null;
while((line = br.readLine())!=null){
    System.out.println(line); // 一行一行读
}
br.close();
原文地址:https://www.cnblogs.com/zpKang/p/12917729.html