一、Reader相关介绍及其子类
Reader
是所有字符输入流的超类。它提供了读取字符流的基本方法,如read()
, read(char[] cbuf, int off, int len)
等;由于Reader
是抽象类,通常使用它的子类如FileReader
, BufferedReader
等来创建字符输入流对象。
Reader常用方法:
int read()
: 读取单个字符。如果已到达流的末尾,则返回-1。
int read(char[] cbuf)
: 读取字符到指定的字符数组。返回读取的字符数,如果已到达流的末尾,则返回-1。
int read(char[] cbuf, int off, int len)
: 读取字符到指定字符数组。返回读取的字符数,如果已到达流的末尾返回-1。
void close()
: 关闭流并释放与之相关联的系统资源。
常见子类:FileReader 用来读取字符文件的实现类。
public FileReader(String fileName) throws FileNotFoundException {
super(new FileInputStream(fileName));
}
public FileReader(File file) throws FileNotFoundException {
super(new FileInputStream(file));
}
二、Writer相关介绍及其子类
Writer
是所有字符输出流的超类。它提供了写入字符流的基本方法,如write(int c)
、write(char[] cbuf)
等;Writer
是抽象类,通常使用它的子类如FileWriter
、BufferedWriter
等来创建字符输出流对象。
Writer常用方法:
void write(int c)
: 写入单个字符。
void write(char[] cbuf)
: 写入字符数组。
void write(String str)
: 写入字符串。
void write(String str, int off, int len)
: 写入字符串的某一部分,off
是字符串开始索引,len
是要写入的字符个数。
void flush()
: 刷新该流的缓冲。
void close()
: 关闭此流,但要先刷新它。
常见子类:FileWriter 用来写出字符文件的实现类。
//如果文件不存在,这会自动创建。如果文件存在,则会覆盖
public FileWriter(String fileName) throws IOException
//如果文件不存在,这会自动创建。如果文件存在,则会覆盖
public FileWriter(File file) throws IOException
//加入true参数,会实现对文件的续写,使用false则会实现对文件的覆盖
public FileWriter(String fileName, boolean append) throws IOException
//加入true参数,会实现对文件的续写,使用false则会实现对文件的覆盖
public FileWriter(File file, boolean append) throws IOException
三、Buffer字符输入和输出流相关介绍
BufferedReader和BufferedWriter是用于处理字符流的两个重要类,它们分别用于从字符输入流中读取数据和向字符输出流中写入数据,这两个类都提供了缓冲功能,使得读写操作更加高效。
(1)、BufferedReader
- 用于从字符输入流中读取文本,并缓冲字符以便有效地读取。
- 当BufferedReader在读取文本文件时,会先尽量从文件中读入字符数据并放满缓冲区。
- 而之后若使用read()方法,会先从缓冲区中进行读取,如果缓冲区数据不足,才会再从文件中读取。
- 构造函数
BufferedReader(Reader in)。
常用方法:
int read()
: 读取单个字符。
int read(char[] cbuf, int off, int len)
: 将字符读入数组的某一部分。
String readLine()
: 读取一整行文本行,返回一整行字符串,如果读到行尾了就返回null, 返回的一行字符中不包含换行符
void close()
: 关闭流并释放与之相关联的系统资源。
(2)、
BufferedWriter
-
用于将文本写入字符输出流,缓冲字符以便有效地写入。
-
写入的数据并不会先输出到目的地,而是先存储至缓冲区中,如果缓冲区中的数据满了,才会一次对目的地进行写出
-
构造函数
BufferedWriter(Writer out)
常用方法:
void write(int c)
: 写入单个字符。
void write(char[] cbuf, int off, int len)
: 写入字符数组的一部分。
void write(String s, int off, int len)
: 写入字符串的一部分。
void newLine()
: 写如一个换行符号。
void close()
: 关闭流并释放与之相关联的系统资源。