Есть ли константа Newline, определенная в Java, как Environment.Newline в C #?

199

В C # есть статическое свойство Environment.Newline, которое меняется в зависимости от работающей платформы.

Есть ли что-нибудь подобное в Java?

ORJ
источник
2
Технически, вы должны спросить: как Java представляет свойство newLine, которое c # реализовало как Environment.Newline, когда оно было создано
Peter
5
теперь, когда я перечитал свое утверждение, я удивляюсь, почему и сам я задаюсь вопросом, о чем я думал
Питер

Ответы:

88

Начиная с Java 7:

System.lineSeparator()

Java API: System.lineSeparator

Возвращает системно-зависимую строку разделителя строк. Всегда возвращает одно и то же значение - начальное значение системного свойства line.separator. В системах UNIX возвращает «\ n»; в системах Microsoft Windows возвращает «\ r \ n».

J.Steve
источник
60

Имейте в виду, что это свойство не так полезно, как думают многие. Например, если приложение работает на компьютере с Windows, это не означает, что файл, который он читает, будет использовать разделители строк в стиле Windows. Многие веб-страницы содержат смесь «\ n» и «\ r \ n», собранных из разных источников. Когда вы читаете текст как последовательность логических строк, вы всегда должны искать все три основных стиля разделителя строк: Windows ("\ r \ n"), Unix / Linux / OSX ("\ n") и Mac OS до OS ("\ r").

Когда вы будете писание текст, вы должны быть более озабочены тем , как файл будет использоваться , чем платформа вы работаете на. Например, если вы ожидаете, что люди будут читать файл в блокноте Windows, вы должны использовать «\ r \ n», поскольку он распознает только один тип разделителя.

Алан Мур
источник
Mac OS ("\ r") до сих пор используется на практике? Или правда сказать, что это можно смело "забыть"?
Pacerier
6
Что ж, независимо от того, используются ли сами машины, вы должны предположить, что есть еще документы, которые были написаны на Mac с пред-OSX. Я знаю , что это заманчиво , чтобы сократить (?:\r?\n|\r)до (?:\r?n), но нет, я не думаю , что это безопасно. Я предпочитаю в (?:\r\n|[\r\n])любом случае; Я знаю, что это больше персонажей, но выглядит аккуратнее. : D И если вам все равно, сколько разделителей строк вы потребляете, [\r\n]+работает просто отлично.
Алан Мур