简介
BufferedWriter用于对Writer的缓冲区,BufferedReader用于对Reader的缓冲区,可以很好的提升效率
读缓冲
我们先从介绍开始
BufferedReader.png
这句话的核心思想就是我们能够在创建该类时,能够在读取数组,字符串的时候进行字符的缓冲,核心在于能够提高效率
我们再看看构造函数
image.png
里面可以填入Reader类的对象(当然子类也可以包含进去)
再瞅瞅方法
image.png
来看看有啥值得注意的方法
readLine():能够对文件中的数据进行一行一行的读取
其他的方法都是平时用的比较频繁的
写缓冲
介绍
image.png
和读缓冲很类似,总之是为了提升效率,能够缓冲字符
构造方法
image.png
内部需要传入的是Writer的子类
方法
image.png
newLine():能够换行,在Windows系统中,换行符是“\r\n”,而在Linux中是“\n”,所以我们在进行文件的写方法时,我们可以用这个方法,不需要根据系统的不同来使用不同的换行的方法
案例
需求:利用缓冲技术实现一份文件的复制
import java.io.*;
public class IOMain {
public static void main(String[] args) throws Exception{
BufferedTest();
}
public static void BufferedTest() {
//简历缓冲读和缓冲写
BufferedReader br=null;
BufferedWriter bw=null;
try {
bw=new BufferedWriter(new FileWriter("C:\\Users\\Administrator\\Desktop\\IO\\BufferTest.txt"));
bw.write("I love you!");
bw.newLine();
bw.write("Do you love me?");
bw.newLine();
bw.write("Thank you!");
bw.flush();//一定要刷新, 不然文档内容还是空的
br=new BufferedReader(new FileReader("C:\\Users\\Administrator\\Desktop\\IO\\BufferTest.txt"));
String str=null;
while((str=br.readLine())!=null)
{
System.out.println(str);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
try {
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
总结
BufferedWriter用于写的时候进行缓冲,内部会创建缓冲区,提高效率,减少多次底层系统的调用
BufferedReader用于读的时候进行缓冲,缓冲区对读入的数据进行存储,减少底层系统的调用