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

时间:2011-10-15 11:09:34

标签: java sockets ssl

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

情况如下:

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

3 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

我会使用DataOutputStream(可能包装BufferedOutputStream)。它允许您转移byte[]intdouble String和许多其他类型。要发送byte[],您可能希望先将长度作为intshort发送。