Line Breaks
As previously mentioned, the println( ) method always adds a line break at the end of each line it prints. You can even call println( ) with no arguments to print just a line break:
public void println( )
The line break character varies from platform to platform. In particular:
- On Unix (including Mac OS X), it's a linefeed, , ASCII 10.
- On Mac OS 9, it's a carriage return, , ASCII 13.
- On Windows, it's a carriage return linefeed pair, , ASCII 13 followed by ASCII 10.
This is almost never what you actually want!
Most file formats and most network protocols care a great deal about which line break character is written.[*] For instance, if you're writing a web client or server, the HTTP specification requires that header lines end with carriage return linefeed pairs. It doesn't matter whether the client or server is a Mac, a PC, a Unix workstation, or a Palm Pilot. It must use as the line break. You can specify this by explicitly passing the line break you want to the print( ) method rather than calling println( ). For example:
[*] XML is a notable exception here. It treats linefeeds, carriage returns, and carriage return linefeed pairs equally.
for (int i = 0; i <= 127; i++) { out.print(i); out.print(" "); }
|
If for some reason you want to know which line break character will be used, the line.separator system property will tell you:
String lineBreak = System.getProperty("line.separator");
Not all line breaks are created equal. If the PrintStream is set to autoFlushthat is, if the second argument to the constructor is trueafter every call to println( ) and after every linefeed that's printed, the underlying stream will be flushed. Thus, out.println( ) and out.print(" ") both flush the stream. So does out.print(" "), because it contains a linefeed. However, out.print(" ") does not cause an automatic flush.