Java中的BufferedReader和BufferedWriter类(附带实例)
在 Java 中,BufferedReader 是 Reader 类的子类,与 BufferedInputStream 类在功能和实现上基本相同,但它适用于字符读入。在输入时,BufferedReader类提供了按字符、数组和行进行高效读取的方法。
BufferedReader 类的构造方法如下:
BufferedReader 类提供了 String readLine() 方法,Reader 类没有提供此方法。使用 String readLine() 方法能够读取文本的一行内容,读一行时,以字符换行符(\n)或回车符(r)作为行结束符。String readLine() 方法的返回值为该行不包含结束符的字符串内容,若已到达流末尾,则返回 null。
和 BufferedReader 相对的,BufferedWriter 是 Writer 类的子类,与 BufferedOutputStream 类在功能和实现上基本相同,但它适用于字符输出。在输出时,BufferedWrite 类提供了按字符、数组和字符串进行高效输出的方法。
BufferedWriter 类的构造方法如下:
BufferedWriter 类的方法与 Writer 类的方法相同。除此之外,BufferedWrite 类增加了创建行分隔符的方法——String newLine(),行分隔符字符串由系统属性 line.separator 定义。
【实例】使用 BufferedReader 类与 BufferedWriter 类实现文本文件的复制。
BufferedReader 类的构造方法如下:
① BufferedReader(Reader in) ② BufferedReader(Reader in,int size)
- 方法 ① 用于创建使用默认大小的输入缓存区的缓存字符输入流,默认大小一般为 8192 个字符。
- 方法 ② 用于创建使用指定大小的输入缓存区的缓存字符输入流。
BufferedReader 类提供了 String readLine() 方法,Reader 类没有提供此方法。使用 String readLine() 方法能够读取文本的一行内容,读一行时,以字符换行符(\n)或回车符(r)作为行结束符。String readLine() 方法的返回值为该行不包含结束符的字符串内容,若已到达流末尾,则返回 null。
和 BufferedReader 相对的,BufferedWriter 是 Writer 类的子类,与 BufferedOutputStream 类在功能和实现上基本相同,但它适用于字符输出。在输出时,BufferedWrite 类提供了按字符、数组和字符串进行高效输出的方法。
BufferedWriter 类的构造方法如下:
① BufferedWriter(Writer out) ② BufferedWriter(Writer out,int size)
- 方法 ① 用于创建使用默认大小的输出缓存区的缓存字符输出流。
- 方法 ② 用于创建一个新的缓存字符输出流,使用给定大小的输出缓存区。
BufferedWriter 类的方法与 Writer 类的方法相同。除此之外,BufferedWrite 类增加了创建行分隔符的方法——String newLine(),行分隔符字符串由系统属性 line.separator 定义。
【实例】使用 BufferedReader 类与 BufferedWriter 类实现文本文件的复制。
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; public class Example { public static void main(String[] args) { copyFile("D:\\Example.java", "D:\\chapter\\back_Example.java"); } // 基于字符缓存流复制文件 public static void copyFile(String srcfile, String desfile) { try ( BufferedReader br = new BufferedReader(new FileReader(srcfile)); BufferedWriter bw = new BufferedWriter(new FileWriter(desfile)); ) { String temp = ""; while ((temp = br.readLine()) != null) { bw.write(temp); // 每次写入完毕,再写入一个换行符 bw.newLine(); } bw.flush(); } catch (Exception e) { e.printStackTrace(); } } }运行程序后,会将源文件 D:\Example.java 的内容复制到 D:\chapter\back_Example.java 文件中。