【问题标题】:BufferedWriter vs PrintWriter with sockets?带有套接字的 BufferedWriter 与 PrintWriter?
【发布时间】:2023-04-01 15:56:02
【问题描述】:

在这种情况下,optimize perfomance in sockets java, 使用套接字、BufferedWriter 还是 PrintWriter 哪个更好?

每个线程(客户端)中的套接字以行的形式发送格式化的数据,带有 CR 的字符串。在 BufferedWriter 中,我会在 write() 之后使用 newLine 吗?

感谢您的帮助。

问候。

【问题讨论】:

    标签: java bufferedreader


    【解决方案1】:

    Javadoc of BufferedWriter 特别声明:

    除非需要提示输出,否则建议将 BufferedWriter 包裹在任何 write() 操作可能代价高昂的 Writer 周围,例如 FileWriters 和 OutputStreamWriters。例如,

     PrintWriter out
       = new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));
    

    【讨论】:

    • 我测试了 3 个选项:out = new PrintWriter(client.getOutputStream(), true); out = new BufferedWriter(new OutputStreamWriter(client.getOutputStream())); out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(client.getOutputStream())), true);并且延迟较少的选项是第一个。当我在 println 之后执行 flush() 时,延迟也消失了。为什么?谢谢。
    • 应该做的是使用BufferedWriter并在你完成后关闭文件,而不是在每一行之后刷新它。
    【解决方案2】:

    PrintWriter 吞下所有异常。除非您每次调用它时都非常小心地检查错误,并且准备好不知道这些错误实际上是什么,否则它通常不应该在您需要了解所有异常的网络上使用。使用 BufferedWriter。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-26
      • 1970-01-01
      • 2018-10-07
      • 2019-02-10
      • 1970-01-01
      相关资源
      最近更新 更多