Как получить зависимый от платформы символ новой строки? - PullRequest
515 голосов
/ 16 октября 2008

Как получить зависимую от платформы новую строку в Java? Я не могу использовать "\n" везде.

Ответы [ 9 ]

660 голосов
/ 07 июня 2012

Java 7 теперь имеет метод System.lineSeparator().

642 голосов
/ 16 октября 2008

Вы можете использовать

System.getProperty("line.separator");

чтобы получить разделитель строк

352 голосов
/ 16 октября 2008

В дополнение к свойству line.separator, если вы используете Java 1.5 или более поздней версии и String.format (или другие форматирование методы), вы можете использовать %n как в

Calendar c = ...;
String s = String.format("Duke's Birthday: %1$tm %1$te,%1$tY%n", c); 
//Note `%n` at end of line                                  ^^

String s2 = String.format("Use %%n as a platform independent newline.%n"); 
//         %% becomes %        ^^
//                                        and `%n` becomes newline   ^^

Подробнее см. Java 1.8 API для Formatter .

43 голосов
/ 16 октября 2008

Если вы пытаетесь записать новую строку в файл, вы можете просто использовать метод BufferedWriter's newLine () .

29 голосов
/ 25 апреля 2013

Это также возможно: String.format("%n").

или String.format("%n").intern() для сохранения некоторых байтов.

22 голосов
/ 28 марта 2012

Библиотека commons-lang имеет постоянное поле, которое называется SystemUtils.LINE_SEPARATOR

12 голосов
/ 20 января 2012

Если вы выполняете запись в файл, используя экземпляр BufferedWriter, используйте метод newLine() этого экземпляра. Он обеспечивает независимый от платформы способ записи новой строки в файл.

9 голосов
/ 29 сентября 2015
StringBuilder newLine=new StringBuilder();
newLine.append("abc");
newline.append(System.getProperty("line.separator"));
newline.append("def");
String output=newline.toString();

В приведенном выше фрагменте две строки разделены новой строкой независимо от платформы.

0 голосов
/ 05 декабря 2012

Избегайте добавления строк с использованием String + String и т. Д., Используйте вместо этого StringBuilder.

String separator = System.getProperty( "line.separator" );
StringBuilder lines = new StringBuilder( line1 );
lines.append( separator );
lines.append( line2 );
lines.append( separator );
String result = lines.toString( );
...