【问题标题】:Can I use both PrintWriter and BufferedOutputStream on the same outputstream?我可以在同一个输出流上同时使用 PrintWriter 和 BufferedOutputStream 吗?
【发布时间】:2011-12-08 07:29:07
【问题描述】:

我可以在同一个输出流上同时使用 PrintWriter 和 BufferedOutputStream 吗?

情况是这样的:

我有一个 SSLSocket 程序,我希望能够在不同的时间点轻松地通过套接字传输字符串和字节 [],而不必将字节 [] 转换为字符串等,但是,PrintWriter 只允许我传输字符串和 BufferedOutputStream 只允许我传输字节。

【问题讨论】:

    标签: java sockets ssl


    【解决方案1】:

    我会使用 DataOutputStream(可能包装一个 BufferedOutputStream)。它允许您传输byte[]intdoubleString 和许多其他类型。要发送byte[],您可能需要先发送长度为intshort

    【讨论】:

      【解决方案2】:

      PrintWriter 只是原始 OutputStream 的包装器。 BufferedOutputStream 也是 OutputStream 的包装器。 所以你可以同时使用两者。为什么不呢?

      您应该考虑的一件事 - 您应该小心在多线程环境中同时使用流和编写器,因为您可能会得到不可预测的结果。

      java.io.Writer 类(PrintWriter 的超类)将自身用作锁定对象。所以你也可以用它来同步多个线程。

      【讨论】:

        【解决方案3】:

        没关系,但您必须确保以正确的顺序冲洗它们。您也可以在BufferedOutputStream 之上使用PrintWriter

        【讨论】:

        • 在同一个账号上,我可以在同一个 InputStream 上同时使用 Scanner 和 BufferedInputStream 吗?
        猜你喜欢
        • 1970-01-01
        • 2012-03-13
        • 1970-01-01
        • 1970-01-01
        • 2012-10-22
        • 1970-01-01
        • 2013-01-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多