首先,“回車”(carriage return)和“換行”(line feed)這兩個概念的來歷和區別我們可以看看:
在每行後面加兩個表示結束的字符。一個叫做“回車”,告訴打字機把打印頭定位在左邊界;另一個叫做“換行”,告訴打字機把紙向下移一行。
當然,java 中換行是一個跨平臺的東西了。
在不同的平臺上,換行符可能是不同的,例如:
Mac平臺:\r
Unix或Linux:\n
Windows或Http:\r\n
Unicode標準:\u2028
可以這樣來測試當前環境的換行符是什麼:
if (System.getProperty("line.separator").equals("\r\n")) {
System.out.println("\\r\\n is for windows");
} else if (System.getProperty("line.separator").equals("\r")) {
System.out.println("\\r is for Mac");
} else if (System.getProperty("line.separator").equals("\n")) {
System.out.println("\\n is for Unix/Linux");
}
System.out.println("aa\nbb");
System.out.println("aa\rbb");
System.out.println("aa\tbb");
win,eclispe輸出如下:
\r\n is for windows
aa
bb
aa
bb
aa bb
綜上,如果你是寫一個http,例如webservice的程序,就直接將換行符硬編碼爲"\r\n"吧!
第二,在socket中進行數據傳輸通常就採用了byte[]這樣的中間件數據類型,所以,我們常常需要將string類型等轉成byte[],例如:
這時,我們在分隔時候若採用了換行符就需要這樣:
sb.append(singleData).append("\r\n");
}