如果PrintWriter.print和PrintWriter.println之间有什么区别怎么办?

时间:2014-02-05 03:24:25

标签: java printing printwriter println

我有一个我正在处理的服务器 - 客户端程序集,现在我遇到了协议问题,因为println语句末尾的新行会混淆元数据。

换句话说,我需要在没有新行的情况下打印到PrintWriter。我试过打印,但由于某种原因,其他程序没有得到这样的消息。为了实验起见,我尝试在语句的末尾添加“\ n”,“\ r”和“\ n \ r”,但它仍然没有获得任何数据。显然打印不能只打印+“\ n \ r”,否则我会用这两种方法得到相同的结果;唉,只有一个有效。

我检查了Javadocs,它说println是,“打印一个字符串,然后终止该行。”
有谁知道这两种方法之间的区别是什么可能导致这种截然不同的行为?

1 个答案:

答案 0 :(得分:1)

来自Javadoc for PrintWriter

  

与PrintStream类不同,如果启用了自动刷新,则只有在调用println,printf或format方法之一时才会执行,而不是每当输出换行符时。这些方法使用平台自己的行分隔符概念而不是换行符。

如果您使用.print(),则必须手动.flush()。只需在\n中使用\r\nString 而不是,就会导致您看到的不同行为。