web-dev-qa-db-fra.com

Quelles sont les différences entre les littéraux de caractères '\ n' et '\ r' en Java?

En Java, les caractères de nouvelle ligne et de retour chariot semblent tous deux montrer le même effet.

Quelles sont les différences réelles entre les littéraux de caractères \n Et \r En Java?


Notez que la question ci-dessus concerne le \n caractère, pas la fonction newLine() sur BufferedWriter, et ainsi cet autre question n'est pas pertinent.

61
siva636

\n est un caractère de saut de ligne (LF), code de caractère 10. \r est un caractère de retour chariot (CR), code de caractère 13. Ce qu’ils font diffère d’un système à l’autre. Sous Windows, par exemple, les lignes de fichiers texte sont terminées par CR suivi immédiatement de LF (par exemple, CRLF). Sur les systèmes Unix et leurs dérivés, seul LF = est utilisé. (Les Macs antérieurs à Mac OS X utilisaient le CR, mais Mac OS X est un dérivé * nix et utilise donc LF.)

Auparavant, LF n'effectuait littéralement qu'un saut de ligne sur les imprimantes (descendant d'une ligne sans se déplacer horizontalement sur la page) et CR, de la même façon, revenait au début de la ligne. sans déplacer le papier vers le haut, d’où certains systèmes (comme Windows) envoyant des CR (retour à gauche) et LF (et alimentez le papier).

En raison de toute cette confusion, certaines cibles de sortie acceptent plusieurs séquences de sauts de ligne. Vous pouvez donc voir le même effet pour l'un ou l'autre caractère, en fonction de ce que vous souhaitez afficher.

84
T.J. Crowder

\n Est pour Unix
\r Est pour mac (avant OS X)
\r\n Est pour le format Windows

vous pouvez aussi prendre System.getProperty("line.separator")

il vous donnera le approprié à votre système d'exploitation

51
Jules

Cela dépend de la plateforme sur laquelle vous travaillez. Pour obtenir le résultat correct, utilisez -

System.getProperty("line.separator")
14
CyrillC

La différence n'est pas spécifique à Java, mais à la plate-forme. Historiquement, les systèmes d'exploitation de type UNIX utilisaient \n en tant que caractère de nouvelle ligne, certains autres systèmes d'exploitation obsolètes ont utilisé \r et les systèmes d’exploitation Windows ont employé \r\n.

5
Uku Loskit

Cela dépend en fait de ce qui est utilisé pour imprimer le résultat. Habituellement, le résultat est le même, comme vous dites -

Historiquement, le retour chariot est censé faire ce que fait le bouton home: renvoyer le curseur au début de la ligne.

\n est supposé vous donner une nouvelle ligne mais pas déplacer le curseur.

Si vous pensez aux anciennes imprimantes, vous pensez assez bien à la pensée des auteurs originaux des jeux de caractères. C'est une opération différente de déplacer le chargeur de papier et de déplacer le curseur. Ces deux personnages expriment cette différence.

2
Dervall

Lorsque vous imprimez une chaîne dans la console (Eclipse),\n,\r et\r\n ont le même effet, ils vous donneront tous une nouvelle ligne; mais\n\r (aussi\n\n,\r\r) vous donnera deux nouvelles lignes; lorsque vous écrivez une chaîne dans un fichier, seul\r\n peut vous donner une nouvelle ligne.

0
Lemuel Lee