一、简介:
BufferedReader 用于加快读取字符的速度, BufferedWriter 用于加快写入的速度
BufferedReader 和 BufferedWriter 类各拥有 8192 个字符的缓冲区。
属于字符流,按照字符读取数据的
二、使用BufferedReader案列
1.使用它读取文本文件,并显示在控制台
步骤;
1.创建读取的文件
2.创建BufferedReader
3.读取
4.关闭流
package com.xbfinal.day02; import java.io.BufferedReader; import java.io.FileReader; /** *演示BufferedReader的使用 * */ public class BufferedReader_ { public static void main(String[] args) throws Exception{ //1.创建读取的文件 String filePath="f:\\01.txt"; //2.创建BufferedReader BufferedReader buf=new BufferedReader(new FileReader(filePath)); //读取(其实底层是FileReader) String line; //按行读取文件,当返回null表示文件读取完毕 while((line=buf.readLine())!=null) { System.out.println(line); } //关闭流(本身应该关闭FileReader 但是实际上只需要关闭BufferedReader) buf.close();//底层会自动关闭节点流 } }
可见上面代码中文乱码了
bufferedReader会以系统默认的编码字符集获取文件内容。如果解析设置的编码字符集与系统默认编码字符集不一致,则会出现乱码问题。
BufferedReader 中文乱码解决方案解决方案;
BufferedReader buf=new BufferedReader(new FileReader(filePath)); 换成 InputStreamReader isr = new InputStreamReader(new FileInputStream(filePath), "UTF-8"); BufferedReader buf=new BufferedReader(isr);
效果:
package com.xbfinal.day02; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.InputStreamReader; /** *演示BufferedReader的使用 * */ public class BufferedReader_ { public static void main(String[] args) throws Exception{ //1.创建读取的文件 String filePath="f:\\01.txt"; //2.创建BufferedReader InputStreamReader isr = new InputStreamReader(new FileInputStream(filePath), "UTF-8"); BufferedReader buf=new BufferedReader(isr); //读取(其实底层是FileReader) String line; //按行读取文件,当返回null表示文件读取完毕 while((line=buf.readLine())!=null) { System.out.println(line); } //关闭流(本身应该关闭FileReader 但是实际上只需要关闭BufferedReader) buf.close();//底层会自动关闭节点流 } }
三、BufferedWriter使用案例
将 hello,笑霸final写入文件
步骤
1.文件写入的路径
2.创建对象
3.写入内容
4.关闭流对象
package com.xbfinal.day02; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; //演示BufferedWriter的使用 public class BufferedWriter_ { public static void main(String[] args)throws IOException { //文件写入的路径 String filePath="f:\\xbfinal.txt"; //准备写入的内容 BufferedWriter buf=new BufferedWriter(new FileWriter(filePath)); buf.write("hello,笑霸final"); buf.newLine();//插入一个换行符; buf.write("hello1,笑霸final"); buf.write("hello2,笑霸final"); buf.close(); } }
追加代码
改动一个地方
BufferedWriter buf=new BufferedWriter(new FileWriter(filePath,true));
然后就能完成追加了