现在的位置: 首页 > 综合 > 正文

PrintWriter write与println方法的区别

2018年04月02日 ⁄ 综合 ⁄ 共 780字 ⁄ 字号 评论关闭

    PrintWriter在以下以pw代替,在写client与server进行测试的通讯程序时,用pw.println(str)可以把数据发送给客户端,而pw.write(str)却不行!
查看源码发现:
    pw.println(str)方法是由write方法与println()方法组成,页println()方法中执行了newLine()方法。
   而 newLine()实现中有一条out.write(lineSeparator);
    即println(str)方法比write方法中多输出了一个lineSeparator字符;

   其中lineSeparator实现为;lineSeparator = (String) java.security.AccessController.doPrivileged(new sun.security.action.GetPropertyAction("line.separator"));
   而line.separator属性跟据每个系统又是不一样的。
   println()方法的注释说明中提到:
  /**
   * Terminates the current line by writing the line separator string.  The
   * line separator string is defined by the system property
   * <code>line.separator</code>, and is not necessarily a single newline
   * character (<code>'\n'</code>).
   */
    在我机器上测试,默认的lineSeparator输出的十六进制为13 10即\r\n
    这样write方法修改为:write(str+"\r\n")即达到了与println(str)一样的效果了。

抱歉!评论已关闭.