BufferedReader:
带有缓冲区的字符输入流。
使用这个流的时候不需要自定义char数组,或者说不需要自定义byte数组。自带缓冲。
当一个流的构造方法中需要一个流的时候,这个被传进来的流叫做:节点流。
外部负责包装的这个流,叫做:包装流,还有一个名字叫做:处理流。
示例代码01:
public class BufferReaderTest01 { public static void main(String[] args) { BufferedReader br = null; try { FileReader reader = new FileReader("Copy02Test01.java"); // 当一个流的构造方法中需要一个流的时候,这个被传进来的流叫做:节点流。 // 外部负责包装的这个流,叫做:包装流,还有一个名字叫做:处理流。 // 像当前这个程序来说:FileReader就是一个节点流。BufferedReader就是包装流/处理流。 br = new BufferedReader(reader); /*//读一行 String line1 = br.readLine(); System.out.println(line1); //读第二行 String line2 = br.readLine(); System.out.println(line2); //读第三行 String line3 = br.readLine(); System.out.println(line3);*/ //循环读取全部内容,API当s为null时已读完 String s = null;//String类型默认值为null while((s = br.readLine()) != null){ System.out.println(s); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if(br != null){ try { // 关闭流 // 对于包装流来说,只需要关闭最外层流就行,里面的节点流会自动关闭。(可以看源代码。) br.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
运行结果:
转换流:InputStreamReader
示例代码02:
public class BufferReaderTest02 { public static void main(String[] args) { BufferedReader br = null; try { /* //字节输入流 FileInputStream in = new FileInputStream("Copy02Test01.java"); //字符转换流,把字节流转换成字符流 //这里的in是节点流,reader是包装流,节点流和包装流是相对的 InputStreamReader reader = new InputStreamReader(in); //字符缓冲流 // 这个构造方法只能传一个字符流。不能传字节流。 //这里的reader是节点流,br则是包装流 br = new BufferedReader(reader);*/ //合并格式 br = new BufferedReader(new InputStreamReader(new FileInputStream("Copy02Test01.java"))); //读取数据 String s = null; while((s = br.readLine()) != null){ System.out.println(s); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally { if(br != null){ try { //关闭最外层 br.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
运行结果:
BufferedWriter:带有缓冲的字符输出流。OutputStreamWriter:转换流
示例代码03:
public class BufferWriterTest { public static void main(String[] args) { BufferedWriter out = null; try { // 带有缓冲区的字符输出流 //out = new BufferedWriter(new FileWriter("temp6.txt")); //转换流格式 out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("temp6.txt",true))); //写 out.write("helloworld!"); out.write("\n"); out.write("helllokitty!"); //刷新 out.flush(); } catch (IOException e) { e.printStackTrace(); }finally { if(out != null){ try { out.close(); } catch (IOException e) { e.printStackTrace(); } } } } }