Reader(字符流读取)
Reader(字符流读取)
java.io.Reader
是一个抽象类, 只能用来操作文本文件
Reader常用实现类的继承关系
- java.lang.Object
java.io.Reader
- java.io.InputStreamReader
java.io.FileReader
java.io.BufferedReader
- java.io.InputStreamReader
常用子类就是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();