以前读取和写入文件内容时,用的Reader和Writer, 当调用 read() 或者 readLine() 方法时,效率是非常慢的。 如果能添加缓冲区,那么就非常好了。 BufferedReader 和 BufferedWriter ,就是在 Reader和 Writer 的基础上,添加了缓冲区, 即不仅具有Reader和Writer的各个功能,还能通过缓冲区进行相应的优化, 其实,这就是装饰器。
一. BufferedReader
从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取。
一.一 方法
一.一.一 构造方法
一.一.一.一 方法
其中,传入的这个 Reader 既可以是 FileReader 这样直接的对象,也可以是 InputStreamReader 这样转换过来的对象,有这两种常见形式。
建议采用第二种,转换流的方式。
一.一.一.二 演示
@Test public void readConTest() throws Exception{ File file=new File("E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc" +File.separator+"rz.txt"); //构造字符的 默认8192 BufferedReader br=new BufferedReader( new FileReader(file),8192); //建议采用第二种方式 BufferedReader br1=new BufferedReader( //跟转换流 new InputStreamReader(new FileInputStream(file)) ); }
一.一.二 读取方法
常常使用 readLine() 一行一行的读取,返回结果直接就是字符串,不用转换。
一.二 BufferedReader 演示
一.二.一 读取文件内容
@Test public void readTest() throws Exception{ File file=new File("E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc" +File.separator+"Hello3.txt"); //构造字符的 默认8192 8M 8M的读 BufferedReader br=new BufferedReader( //跟转换流 new InputStreamReader(new FileInputStream(file)) ); String temp=""; while(null!=(temp=br.readLine())){ System.out.println("输出行:"+temp); } }
运行程序,控制台打印出文件的内容:
一.二.二 读取控制台 System.in 输入
public static void main(String[] args) throws Exception { readSystem(); } public static void readSystem() throws Exception{ System.out.println("请输入问候语:"); BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); String password=br.readLine(); System.out.println("输出问候语:"+password); }
运行程序:
二. BufferedWriter
二一 方法
二.一.一 构造方法
二.一.一.一 方法
其中,传入的这个 Writer 既可以是 FileWriter 这样直接的对象,也可以是 InputStreamWriter 这样转换过来的对象,有这两种常见形式。
建议采用第二种,转换流的方式。
二.一.一.二 演示
@Test public void writeConTest() throws Exception{ File file=new File("E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc" +File.separator+"Hello3.txt"); //第一种 BufferedWriter bufferedWriter=new BufferedWriter( new FileWriter(file,true) ); //最好是用第二种转换的 BufferedWriter bufferedWriter1=new BufferedWriter( new OutputStreamWriter(new FileOutputStream(file)) ); }
二.一.二 写入方法
常常使用 write(String s, int off, int len) 直接写入字符串文本。
如果需要换行的话, 用 newLine() 方法进行换行。
二.二 BufferedWriter 演示
Hello3.txt 目前的文件内容是:
@Test public void writeTest() throws Exception{ File file=new File("E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc" +File.separator+"Hello3.txt"); BufferedWriter bufferedWriter1=new BufferedWriter( new OutputStreamWriter(new FileOutputStream(file)) ); //重启一行, 其实就是内部写 \r\n bufferedWriter1.newLine(); bufferedWriter1.write("我是BufferedWriter写入的内容"); bufferedWriter1.newLine(); bufferedWriter1.write("Hello",2,3); bufferedWriter1.close(); }
运行程序,查看 Hello3.txt 文件的内容(重写写入的)
谢谢您的观看,如果喜欢,请关注我,再次感谢 !!!