目录
一、BufferedReader
Reader有一个子类BufferedReader。子类继承父类显然子类可以重写父类的方法,也可以增加自己的新方法。例如一次读一行就是常用的操作.那么BufferedReader 类就提供了这个方法,可以查看readLine()方法
具备 一次读取一个文本行的功能。很显然,该子类可以对功能进行增强。(装饰者模式)。
高效的原因:
BufferedReader:每次调用read方法,只有第一次从磁盘中读取了8192个字符,存储到该类型对象的缓冲区数组中,将其中一个返回给调用者,再次调用read方法时,就不需要再访问磁盘,直接从缓冲区中
拿一个出来即可,效率提升了很多。
特有方法: readLine() 一次读到文件中的一行。
案例: 使用BufferedReader读取文件内容,输出到控制台上。
BufferedReader br = new BufferedReader(new FileReader("c:/bbb.txt"));
/*
String str = br.readLine();
System.out.println(str);
String str2 = br.readLine();
System.out.println(str2);
String str3 = br.readLine();
System.out.println(str3);
String str4 = br.readLine();
System.out.println(str4);
String str5 = br.readLine();
System.out.println(str5);
String str6 = br.readLine();
System.out.println(str6);
String str7 = br.readLine(); // 读到null 表示读到文件的末尾
System.out.println(str7);*/
String str = "";
while((str = br.readLine())!=null){
System.out.println(str);
}
br.close();
二、BufferedWriter
高效的原因:
BufferedWriter:每次调用write方法,不会直接将字符刷新到文件中,而是存储到字符数组中,等字符数组写满了,才一次性刷新到文件中,减少了和磁盘交互的次数,提升了效率。
方法:
Write()
newLine() 写入一个换行
public class Demo15_字符缓冲流_BufferedWriter {
public static void main(String[] args) throws Exception{
/*
BufferedWriter bw = new BufferedWriter(new FileWriter("F:/aaa.txt"));
bw.write("xxx"); // 先把数据写入缓冲区 缓存区存满或 flush时把输出刷入文件
bw.flush();
bw.close();
*/
BufferedWriter bw = new BufferedWriter(new FileWriter("F:/aaa.txt"));
bw.write("xxx");
bw.newLine(); // 写入一个换行
bw.write("yyy");
bw.flush();
bw.close();
}
}
三、PrintWriter(字符打印流)
构造方式
PrintWriter(File file) |
PrintWriter(File file, String csn) |
PrintWriter(OutputStream out) |
PrintWriter(OutputStream out, boolean autoFlush) |
PrintWriter(String fileName) |
PrintWriter(String fileName, String csn) |
PrintWriter(Writer out) |
PrintWriter(Writer out, boolean autoFlush) |
该类中除了有write方法外,用提供了print方法和println方法,用来写数据。
案例:使用BufferedReader 和 PrintWriter完成文件拷贝。
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new FileReader("c:/bbb.txt"));
PrintWriter pw = new PrintWriter("D:/bbb.txt");
String str = "";
while((str =br.readLine())!=null){
pw.println(str);
}
pw.close();
br.close();
}
下一篇:(55)Java基础 --多线程