Java BufferedReader和BufferedWriter、InputStreamReader
BufferedReader
带有缓冲区的字符输入流。
使用这个流的时候不需要自定义char数组,或者说不需要自定义byte数组。自带缓冲。
package com.bjpowernode.java.io; import java.io.BufferedReader; import java.io.FileReader; public class BufferedReaderTest01 { public static void main(String[] args) throws Exception{ FileReader reader = new FileReader("Copy02.java"); // 当一个流的构造方法中需要一个流的时候,这个被传进来的流叫做:节点流。 // 外部负责包装的这个流,叫做:包装流,还有一个名字叫做:处理流。 // 像当前这个程序来说:FileReader就是一个节点流。BufferedReader就是包装流/处理流。 BufferedReader br = new BufferedReader(reader); // 读一行 /*String firstLine = br.readLine(); System.out.println(firstLine); String secondLine = br.readLine(); System.out.println(secondLine); String line3 = br.readLine(); System.out.println(line3);*/ // br.readLine()方法读取一个文本行,但不带换行符。 String s = null; while((s = br.readLine()) != null){ System.out.print(s); } // 关闭流 // 对于包装流来说,只需要关闭最外层流就行,里面的节点流会自动关闭。(可以看源代码。) br.close(); } }
InputStreamReader
package com.bjpowernode.java.io; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.InputStream; import java.io.InputStreamReader; /* 转换流:InputStreamReader */ public class BufferedReaderTest02 { public static void main(String[] args) throws Exception{ /*// 字节流 FileInputStream in = new FileInputStream("Copy02.java"); // 通过转换流转换(InputStreamReader将字节流转换成字符流。) // in是节点流。reader是包装流。 InputStreamReader reader = new InputStreamReader(in); // 这个构造方法只能传一个字符流。不能传字节流。 // reader是节点流。br是包装流。 BufferedReader br = new BufferedReader(reader);*/ // 合并 BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("Copy02.java"))); String line = null; while((line = br.readLine()) != null){ System.out.println(line); } // 关闭最外层 br.close(); } }
BufferedWriter
package com.bjpowernode.java.io; import java.io.BufferedWriter; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.OutputStreamWriter; /* BufferedWriter:带有缓冲的字符输出流。 OutputStreamWriter:转换流 */ public class BufferedWriterTest { public static void main(String[] args) throws Exception{ // 带有缓冲区的字符输出流 //BufferedWriter out = new BufferedWriter(new FileWriter("copy")); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("copy", true))); // 开始写。 out.write("hello world!"); out.write("\n"); out.write("hello kitty!"); // 刷新 out.flush(); // 关闭最外层 out.close(); } }