File file = new File(new File("").getAbsoluteFile()+File.separator+"demo.txt");
Writer writer = new FileWriter(file);
long begin = System.currentTimeMillis();
for(int i=0;i<1000000;i++) {
writer.write(i);
}
writer.close();
long end = System.currentTimeMillis();
System.out.println(end - begin);
145ms
File file = new File(new File("").getAbsoluteFile()+File.separator+"demo.txt");
Writer writer = new BufferedWriter(new FileWriter(file));
long begin = System.currentTimeMillis();
for(int i=0;i<1000000;i++) {
writer.write(i);
}
writer.close();
long end = System.currentTimeMillis();
System.out.println(end - begin);
86ms
以上代码可以发现只有writer的实例化有点变化,下面的使用的BufferedWriter去实例化对象的,使用了缓冲机制
BufferedWriter有两个构造方法
构造方法摘要 | |
---|---|
BufferedWriter(Writer out) 创建一个使用默认大小输出缓冲区的缓冲字符输出流。 | |
BufferedWriter(Writer out, int sz) 创建一个使用给定大小输出缓冲区的新缓冲字符输出流。 |
我们使用的是第一个构造方法,默认缓冲区大小是8K,第二种可以指定缓冲区大小
当然过大的缓冲区会浪费系统内存,增加GC负担。