package com.cskaoyan.charstream.buffered;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
/**
* @author zhangshuai@Cskaoyan.onaliyun.com.
* @version 1.0
*
* 1. 同在字节流中引入缓冲流的原因相同,出于效率的考虑,在字符流中,我们同样引入缓冲流。
* 2. 缓冲流中,定义了自己独有的方法(Reader和Writer中没有的方法)
BufferedWriter
void newLine()
写入一个行分隔符
BufferedReader
String readLine()
读取一个文本行。通过下列字符之一即可认为某行已终止:换行 ('\n')、回车 ('\r') 或回车后直接跟着换行。
返回:
包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null
结合以上两个缓冲字符流中,定义的缓冲流独有的方法,可以实现按行复制文本文件的功能
1. BufferedWriter(Writer out)
创建一个使用默认大小输出缓冲区的缓冲字符输出流。
2. BufferedReader(Reader in)
创建一个使用默认大小输入缓冲区的缓冲字符输入流。
*/
public class Demo1 {
public static void main(String[] args) throws IOException {
// 1.创建流对象
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("b.txt"));
BufferedReader bufferedReader = new BufferedReader(new FileReader("a.txt"));
// 2. 按行复制文本文件
String lineStr;
while ((lineStr = bufferedReader.readLine()) != null) {
// 把读取到的一行字符串,写入缓冲字符输出流
bufferedWriter.write(lineStr);
// 在一行字符串之后,添加换行符
bufferedWriter.newLine();
}
// 关闭流,关闭最上层的包装流即可
bufferedReader.close();
bufferedWriter.close();
}
}