字符流的两个根抽象类,所有的实现方法都是以他们来结尾的。 因为是字符,所以涉及到编码问题,GBK,UTF-8,默认采用平台字符格式,程序时,建议指定字符集,便于控制 reader:字符输入流的抽象类 ->InputStreamReader(inputstream inp ,String charsetName) reader->InputStreamReader->FileReader->BufferedReader writer->OutputStreamWrite->FileWrite ->BufferedWriter
eg:
package eight;
import java.io.*;
/**
* @author KuKaFei.Hai
* @date 2020/4/7 : 16:31
* @Email : 383232084@qq.com
*/
public class bufferedReaderAndWriter {
public static void main(String[] args) throws Exception {
//申明文件路径
String pahtSrcName ="OneStage\\src\\Eight\\test2.txt";
//申明文件路径
String pahtDesSrcName ="OneStage\\src\\Eight\\copytest2.txt";
//构造文件写入流,读取流
FileReader fr = new FileReader(pahtSrcName);
FileWriter fw = new FileWriter(pahtDesSrcName);
//构造字符缓冲写入流和读取流
BufferedReader br = new BufferedReader(fr);
BufferedWriter bw = new BufferedWriter(fw);
/**
* 读写数据
* A:一次读一个数组,写一个数组
* B:一次读一行,写一行
*/
// A
//raderAndWriterByArray(br,bw);
//B
readerAndWriteFileByLin(br,bw);
//关闭读写流
br.close();
bw.close();
}
private static void readerAndWriteFileByLin(BufferedReader br, BufferedWriter bw) throws IOException {
//定义一个保存读取行的中转变量
String strLine;
while((strLine=br.readLine())!=null){
//一次只读一行数据,不包括换行符
bw.write(strLine);
// 写一个换行
bw.newLine();
// 刷新数据
bw.flush();
}
}
private static void raderAndWriterByArray(BufferedReader br, BufferedWriter bw) throws IOException {
//定义一个缓存字符数组
char[] charTemp = new char[1024];
while ((br.read(charTemp))!=-1){
bw.write(charTemp);
}
}
}