一、字符缓冲输出流
java.io.BufferedWriter extends Writer
BufferedWriter:字符缓冲输出流。
继承自父类的共性成员方法:
void write(int c) 写入单个字符。
void write(char[] cbuf)写入字符数组。
abstract void write(char[] cbuf, int off, int len)写入字符数组的某一部分,off数组的开始索引,len写的字符个数。
void write(String str)写入字符串。
void write(String str, int off, int len) 写入字符串的某一部分,off字符串的开始索引,len写的字符个数。
void flush()刷新该流的缓冲。
void close() 关闭此流,但要先刷新它。
构造方法:
BufferedWriter(Writer out) 创建一个使用默认大小输出缓冲区的缓冲字符输出流。
BufferedWriter(Writer out, int sz) 创建一个使用给定大小输出缓冲区的新缓冲字符输出流。
参数:
writer out:字符输出流,可以传递FileWriter,缓冲流会给FileWriter增加一个缓冲区,提高FileWriter的写入效率
int sz:指定缓冲区的大小,不写默认大小
特有的成员方法:
void newLine() 写入一个行分隔符。会根据不同的操作系统,获取不同的行分隔符
Tips:之前需要自动手动加换行符号,这里提供了添加换行符的方法。
使用步骤【重要】:
① 创建字符缓冲输出流对象,构造方法中传递字符输出流
② 调用字符缓冲输出流中的方法write,把数据写入到内存缓冲区中
③ 调用字符缓冲输出流中的方法flush,把内存缓冲区中的数据,刷新到文件中
④ 释放资源
Demo:
1 public static void main(String[] args) throws IOException {
2 //1.创建字符缓冲输出流对象,构造方法中传递字符输出流
3 BufferedWriter bw = new BufferedWriter(new FileWriter("E:\c.txt"));
4 //2.调用字符缓冲输出流中的方法write,把数据写入到内存缓冲区中
5 for (int i = 0; i <10 ; i++) {
6 bw.write("java程序员");
7 //bw.write("
"); 原先手动添加换行
8 bw.newLine(); // 调用换行方法
9 }
10 //3.调用字符缓冲输出流中的方法flush,把内存缓冲区中的数据,刷新到文件中
11 bw.flush();
12 //4.释放资源
13 bw.close();
14 }
二、字符缓冲输入流
java.io.BufferedReader extends Reader
BufferedReader:字符缓冲输入流
继承自父类的共性成员方法:
int read() 读取单个字符并返回。
int read(char[] cbuf)一次读取多个字符,将字符读入数组。
void close() 关闭该流并释放与之关联的所有资源。
构造方法:
BufferedReader(Reader in) 创建一个使用默认大小输入缓冲区的缓冲字符输入流。
BufferedReader(Reader in, int sz) 创建一个使用指定大小输入缓冲区的缓冲字符输入流。
参数:
Reader in:字符输入流,可以传递FileReader,缓冲流会给FileReader增加一个缓冲区,提高FileReader的读取效率
int sz:指定缓冲区的大小,不写默认大小
特有的成员方法:
String readLine() 读取一个文本行。读取一行数据
行的终止符号:通过下列字符之一即可认为某行已终止:换行 (' ')、回车 (' ') 或回车后直接跟着换行( )。
方法的返回值:包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null。
使用步骤:
① 创建字符缓冲输入流对象,构造方法中传递字符输入流
② 使用字符缓冲输入流对象中的方法read/readLine读取文本
③ 释放资源
Demo:
1 public static void main(String[] args) throws IOException {
2 //1.创建字符缓冲输入流对象,构造方法中传递字符输入流
3 BufferedReader br = new BufferedReader(new FileReader("10_IO\c.txt"));
4
5 //2.使用字符缓冲输入流对象中的方法read/readLine读取文本
6 /*String line = br.readLine();
7 System.out.println(line);
8
9 line = br.readLine();
10 System.out.println(line);*/
11
12 /*
13 发下以上读取是一个重复的过程,所以可以使用循环优化
14 不知道文件中有多少行数据,所以使用while循环
15 while的结束条件,读取到null结束
16 */
17 String line;
18 while((line = br.readLine())!=null){
19 System.out.println(line);
20 }
21
22 //3.释放资源
23 br.close();
24 }