PrintWriter 的Write()方法和println()方法有何细微的区别

关于某个问题:

在服务器端和客户端产生一个Socket 后,

两边各自用getIputStream()和getOutputStream()方法,构造各自的输入输出流。

其中服务器端的Socket ss

BufferedReader is=new BufferedReader(new InputStreamReader(ss.getInputStream()) );
PrintWriter os=new PrintWriter (new OutputStreamWriter(ss.getOutputStream()) );

os.writer(“一个乱七八糟的字符串”);

客户端的Socket cs

BufferedReader is=new BufferedReader(new InputStreamReader(cs.getInputStream()) );
PrintWriter os=new PrintWriter (new OutputStreamWriter(cs.getOutputStream()) );

System.out.println(is.readLine());

(当然这两个肯定不是一个类文件中噢!)

按理说,应该是ss的 os对应着cs的 is. 为什么在服务器端写入了,在客户端这边没法读出来呢?

另外,如果服务器端用os.println(“字符串”);就好使了。

请问这是问什么?

PrintWriter 的Write()方法和println()方法有何细微的区别_第1张图片

源码分析根本原因:

write:
这里写图片描述

而println(举个例 其他print也是一样道理):
PrintWriter 的Write()方法和println()方法有何细微的区别_第2张图片

————print
PrintWriter 的Write()方法和println()方法有何细微的区别_第3张图片

————println(重点来了)
这里写图片描述

PrintWriter 的Write()方法和println()方法有何细微的区别_第4张图片

所以应了这个回答:
可以确定就是flush和\r\n的问题

不信?
PrintWriter 的Write()方法和println()方法有何细微的区别_第5张图片

这儿还真刷新和换行缺一都不可以额~

你可能感兴趣的:(java)