您的位置:首页 > Web前端

StringBuffer中的flush()方法作用

2015-06-15 15:24 141 查看
在java API1.6对flush()方法的介绍如下:

方法摘要
void
close()

关闭此流,但要先刷新它。
void
flush()

刷新该流的缓冲。
void
newLine()

写入一个行分隔符。
void
, int, int)]write(char[] cbuf, int off, int len)

写入字符数组的某一部分。
void
write(int c)

写入单个字符。
void
write(String s, int off, int len)

写入字符串的某一部分。
flush

publicvoid flush()
throws IOException

刷新该流的缓冲。 指定者:接口
Flushable
中的
flush
指定者:
Writer
中的
flush
抛出:
IOException
- 如果发生 I/O 错误
以上是API中介绍的,通过我的测试发现其具体的用处如下:

  观察如下代码:

    

 package mosTest;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class lis {

public staticvoid main(String[] args) throws IOException {
File file1 = new File("D:\\io\\out.txt");
BufferedWriter bw = new BufferedWriter(new FileWriter(file1));
StringBuilder buffer = new StringBuilder("S|1|S0180||||");
buffer.append("\r\n");
List subList = new ArrayList();
List listid = new ArrayList();
long s= System.currentTimeMillis();
for (int i = 0; i < 60; i++) {
for(int k=0; k<5000; k++){
buffer.append("KKKKKKKKKKKKKKKKKKKKKKKKKK"+k);
buffer.append("\r\n");
}
bw.write(buffer.toString());
//bw.flush();
buffer = new StringBuilder();
}
bw.close();
}
}


该代码是每次写入文件5000长度的buffer,总共写入60次。
如果没有加上第30行注释的bw.flush().在第29行执行的程序,写入的数据并不是写入到文件中而是写入到内存中,此时当

StringBuffer超过内存限制的时候,会把缓存中的数据才会写入到文件中,相当于超过限制的执行了一次bw.flush();

而加上bw.flush()后,会在每次执行到此处的时候都会把缓存中的数据写入到文件中,并清空缓存。

但是需要注意的是,如果加上这句,每次循环都会执行一次,同样的会增加用时。所以时间和占用缓存这个需要做比较了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: