import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;public class FlushTest {
    public static void main(String args[]) {
        String strings[] = {"a", "b", "c", "d", "e"};
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        BufferedOutputStream buff = new BufferedOutputStream(out);
        try {
            for (int i = 0; i < strings.length; i++) {
                buff.write(strings[i].getBytes("UTF-8"));
                buff.flush(); // TODO: COMMENT THIS
                System.out.println("the " + i + "th time to write it is: " +
                        new String(out.toByteArray()));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}flush() 只用在 BufferedStream 上面

解决方案 »

  1.   

    flush() 就是把缓冲区冲掉,就像比喻太恶心,不说了。
      

  2.   

    你可以试试使用BufferedOutputStream之类的,如果你不flush就可能会没有真正发出没有flush不代表它就不发出,只是可能没有完全发出。调用flush是保证缓存清空发出
      

  3.   

    ChDw(米) 说的有理,在有的例子中刷新显得尤为重要,如客户和服务器在进行数据传送的时候若刷新没有发生,那么信息不会进入网络,除非缓冲区满(溢出),这会带来许多问题。
    其实你可以参考TIJ中的第15章 网络编程中的例子。