我有一些这样的代码:
PrintWriter pw = new PrintWriter(new BufferedReader(....)); for(int i=0; i<10; i++) { pw.println("a"); pw.flush();// flush each time when println()? } pw.close();
每个’for’语句中的flush()是否必须?我听说flush()在调用close()时会自动调用.
如果我写这样的代码:
PrintWriter pw = new PrintWriter(new BufferedReader(....),true);
我不会写pw.flush()了吗?谢谢.
解决方法
在您的示例中可能不需要flush().
它所做的是确保在调用flush()之前写入作者的任何东西都写入基础流,而不是坐在某些内部缓冲区中.
该方法在几种情况下派上用场:
>如果另一个进程(或线程)在写入文件时需要检查文件,并且其他进程重要的是看到所有最近的写入.>如果写入过程可能会崩溃,重要的是不要对文件的写入丢失.>如果你正在写信给控制台,并且需要确保每一个消息都会在写入之后显示出来.