2013-07-09 4 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") 

% п спецификатор формата вводит платформы зависимую строку.

0

Его поскольку logger.debug выводит на одну строку без символов перевода строки. Если вы хотите печатать на двух строках, вам нужно дважды использовать logger.debug.

+0

OP вызывает 'logger.debug()' внутри цикла, поэтому его нужно выполнить дважды. – nif

1

Просто попробовал сам, и над кодом печатает две строки на моей машине при использовании System.out.println для вывода.

Как уже отмечалось, «\ п», не зависит от платформы, но в соответствии с BufferedReader documentation:

линия считается расторгнутым по любому из перевода строки ('\ п '), возврат каретки (' \ r ') или возврат каретки следует сразу с помощью перевода строки.

все должно быть в порядке.