【问题标题】:PrintWriter print vs printlnPrintWriter 打印与 println
【发布时间】:2016-01-08 17:00:44
【问题描述】:

我有一个服务器在等待消息,而一个客户端在使用时向他发送消息

    PrintWriter out = new PrintWriter(lpSocket.getOutputStream(), true);
    String msg;
    BufferedReader userIn = new BufferedReader(new InputStreamReader(System.in));
    while ((msg = userIn.readLine()) != null)
        out.print(msg + (char) 10);

什么都没有发生,这意味着服务器只是继续等待从未到达的消息。当我将 out.print 更改为 out.println 时,它可以工作。

我想知道为什么

【问题讨论】:

  • 数据缓冲/刷新。
  • 使用'\n' 比使用(char) 10 更具可读性。

标签: java sockets printing printwriter


【解决方案1】:

默认情况下,PrintWriterprintln 中调用flush,而在print 中不这样做。您可以通过在 out.print 调用后添加 out.flush() 来解决此问题

【讨论】: