我可以在同一输出流上同时使用PrintWriter和BufferedOutputStream吗?
情况如下:
我有一个SSLSocket程序,我希望能够在不同的时间点轻松地在套接字上传输字符串和byte [],而不必将byte []转换为字符串等,但是,PrintWriter只允许我传输字符串和BufferedOutputStream只允许我传输字节。
答案 0 :(得分:6)
PrintWriter只是原始OutputStream的包装器。 BufferedOutputStream也是OutputStream的包装器。 所以你可以使用两者。为什么不呢?
您应该考虑的一件事 - 您应该小心在多线程环境中使用流和编写器,因为您可能会得到不可预测的结果。
java.io.Writer类(PrintWriter的超类)将自身用作锁定对象。所以你也可以用它来同步多个线程。
答案 1 :(得分:2)
没关系,但你必须确保以正确的顺序冲洗它们。您还可以使用PrintWriter
上的BufferedOutputStream
。
答案 2 :(得分:0)
我会使用DataOutputStream(可能包装BufferedOutputStream)。它允许您转移byte[]
,int
,double
String
和许多其他类型。要发送byte[]
,您可能希望先将长度作为int
或short
发送。