Existe-t-il une constante Newline définie en Java comme Environment.Newline en C #?

199

En C #, il y a la propriété statique Environment.Newline qui a changé en fonction de la plate-forme en cours d'exécution.

Y a-t-il quelque chose de similaire en Java?

orj
la source
2
Techniquement, vous devriez demander: Comment Java représente-t-il la propriété newLine que c # a implémentée comme Environment.Newline lors de sa création
Peter
5
maintenant que j'ai relu ma déclaration, je me demande pourquoi moi aussi je me demande ce que je pensais
Peter

Réponses:

88

Depuis Java 7:

System.lineSeparator()

API Java: System.lineSeparator

Renvoie la chaîne de séparation de lignes dépendante du système. Il renvoie toujours la même valeur - la valeur initiale de la propriété système line.separator. Sur les systèmes UNIX, il renvoie "\ n"; sur les systèmes Microsoft Windows, il renvoie "\ r \ n".

J.Steve
la source
60

Sachez que cette propriété n'est pas aussi utile que beaucoup de gens le pensent. Le fait que votre application s'exécute sur une machine Windows, par exemple, ne signifie pas que le fichier qu'elle lit utilisera des séparateurs de lignes de style Windows. De nombreuses pages Web contiennent un mélange de "\ n" et "\ r \ n", ayant été bricolé à partir de sources disparates. Lorsque vous lisez du texte comme une série de lignes logiques, vous devez toujours rechercher les trois principaux styles de séparateur de lignes: Windows ("\ r \ n"), Unix / Linux / OSX ("\ n") et Mac pré-OSX ("\ r").

Lorsque vous écrivez du texte, vous devez vous préoccuper davantage de la façon dont le fichier sera utilisé que de la plateforme sur laquelle vous exécutez. Par exemple, si vous vous attendez à ce que les gens lisent le fichier dans le Bloc-notes Windows, vous devez utiliser "\ r \ n" car il ne reconnaît qu'un seul type de séparateur.

Alan Moore
la source
Le Mac pré-OSX ("\ r") est-il toujours utilisé en pratique? Ou est-il vrai de dire qu'il peut être "oublié" en toute sécurité?
Pacerier
6
Eh bien, que les machines elles-mêmes soient toujours utilisées ou non, vous devez supposer qu'il existe encore des documents écrits sur des Mac pré-OSX. Je sais qu'il est tentant de réduire (?:\r?\n|\r)à (?:\r?n), mais non, je ne pense pas qu'il soit en sécurité. Je préfère (?:\r\n|[\r\n])quand même; Je sais que c'est plus de personnages, mais ça a l'air plus propre. : D Et si vous ne vous souciez pas du nombre de séparateurs de ligne que vous consommez, cela [\r\n]+fonctionne très bien.
Alan Moore