2013-07-09 34 views
0

我有這樣的代碼:帶StringReader的新行字符 - n被忽略?

String sampleString = "1223,4455,6667" + "\n" + "1223,4455,6667" + "\n"; 

BufferedReader reader = new BufferedReader(new StringReader(sampleString)); 
String line; 
while ((line = reader.readLine()) != null) { 
    if (line.trim().length() == 0) { 
     continue; 
    } 
    logger.debug("CSVLIne:" + line); 
} 

我期待它打印兩行。但它顯示在一行。此代碼中有任何錯誤?

回答

1

您需要逃生者換行符

String sampleString = String.format("1223,4455,6667%n1223,4455,6667%n") 

的%N格式說明介紹了平臺相關的換行符。

0

它是因爲logger.debug在一行中輸出沒有換行符。如果你想在兩行上打印,你需要使用logger.debug兩次。

+0

OP在循環內調用'logger.debug()',所以它應該執行兩次。 – nif

1

我自己試了一下,上面的代碼在使用System.out.println輸出時在我的機器上打印了兩行代碼。

正如其他人指出的那樣,「\ n」是不依賴於平臺的,但是根據BufferedReader documentation

的線被認爲是由一個換行 中的任何一個被終止('\ n '),一個回車符('\ r')或一個回車符 立即被一個換行符。

它應該沒問題。