黑马程序员技术交流社区

标题: socket [打印本页]

作者: jialianghao    时间: 2016-4-14 10:19
标题: socket
客户端和服务端进行传输时。我看视频怎么都用PrintWriter out=(s.getOutputStream(),true);
不应该是OutputStream out=(new OutputStreamWriter(s.getOutputStream()));吗???两个语句有什么关系吗?
作者: IT金城武    时间: 2016-4-14 11:29
打印流其实就是一个输出流,而且打印流构造方法里可以传入一个boolean类型,true就是自动刷新
作者: 「AτS」    时间: 2016-4-14 12:05
本帖最后由 「AτS」 于 2016-4-14 12:06 编辑

PrintWriter out=(s.getOutputStream(),true);  这句语句后面是用了小括号括起来的,看到没,为什么呢?
因为PrintWriter的其中一个构造函数是这样的:
     PrintWriter(OutputStream out, boolean autoFlush)
          通过现有的 OutputStream 创建新的 PrintWriter。
上面这个方法相当于是将字节流转成了字符流, 他是传入字节流以创建了新的PrintWriter对象;
OutputStream out=(new OutputStreamWriter(s.getOutputStream()));   这句话里面你获取到了字节流, 然后又用OutputStreamWriter转成了字符流,

并作为了参数,左边是用OutputStream接收的, 这样就多做了,你直接OutputStream out  = s.getOutputStream(),就可以了, 而且然后我看了一下API,OutputStream好像是没有这个构造方法吧





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2