2010-07-22 20 views
3

Quelle est la différence entre newLine() et le retour chariot ("\ r")? Lequel est le meilleur à utiliser?différence entre newLine() et retour chariot (" r")

File f = new File(strFileGenLoc); 
BufferedWriter bw = new BufferedWriter(new FileWriter(f, false)); 
rs = stmt.executeQuery("select * from jpdata"); 
while (rs.next()) 
{ 
    bw.write(rs.getString(1)==null? "":rs.getString(1)); 
    bw.newLine(); 
} 
+3

De quel 'newLine()' faites-vous référence? – skaffman

+0

@ skaffman .. s'il vous plaît voir le code ci-dessus que j'utilise. – Manu

Répondre

14

En supposant que vous dire ceci:

public static String newLine = System.getProperty("line.separator"); 

newLine environnement agnostique \r n'est pas.

Alors newLine vous donnera \r\n sur Windows mais \n sur un autre environnement.

Cependant, vous ne devriez pas utiliser ceci dans un JTextArea et println fonctionnera correctement avec juste \n sur Windows.

Modifier maintenant que je l'ai vu le code et votre commentaire

Dans votre situation. Je pense que vous devez utiliser votre propre constante - \r\n

File f = new File(strFileGenLoc); 
    BufferedWriter bw = new BufferedWriter(new FileWriter(f, false)); 
    rs = stmt.executeQuery("select * from jpdata"); 
    while (rs.next()) { 
    bw.write(rs.getString(1)==null? "":rs.getString(1)); 
    bw.write("\\r\\n"); 
    } 
+0

. Je crée un fichier texte dans un environnement Unix en utilisant le code Java. et transmettre le fichier au client, mais de leur côté, ils ont besoin de retour chariot dans le fichier texte. lequel je dois utiliser newLine() ou le retour chariot ("\ r") – Manu

+1

J'utiliserais "\ r \ n" car cela affichera correctement sur Windows et la plupart des éditeurs de texte Unix. –

+0

Doubler le backslash n'est pas correct. – EJP

9

Dans le temps de ASR-33 téléscripteurs (et, plus tard, des imprimantes matricielles aux déplacements têtes d'impression), le CR littéralement retourné le chariot vers la gauche, comme dans une machine à écrire, et le LF a avancé le papier. La machinerie pourrait chevaucher les opérations si le CR venait avant le LF, c'est pourquoi le caractère de nouvelle ligne était toujours CR-LF, c'est-à-dire \ r \ n. Si vous l'avez ramené à l'avant, il a fallu beaucoup plus de temps pour imprimer. Unix a été le premier (seulement?) Système à adopter juste \ n comme séparateur de ligne standard. DOS/Windows n'a pas.

-1

la majeure newLine (\n) et de retour de chariot (\r) est:

nouveau retour chariot ligne (\n) & (\r) à la fois la séquence d'échappement r en java ..

nouvelle ligne (\n) Lorsque \n se trouve dans les instructions exécutables séquence) .. exemple:

println("Stackover\nflow"); 

sortie:

Stackover // here the line got split into 2 lines because of "\n" 
flow 

retour chariot (\r):

les données ou le caractère placé après le \r se fatiguer avec les caractères précédents présents dans le même ligne ...

exemple:

println("Stackover\rflow"); 
output: 
flow // here Statckover is overtired because of "\r" 
+0

La machine virtuelle Java ne partage rien. La * ligne * est * déjà divisée, * en vertu de la nouvelle ligne. Le * périphérique * sur lequel il est imprimé * peut ou ne peut pas se comporter comme vous l'avez décrit. La JVM n'y joue précisément aucun rôle. Trop de désinformation. -1 – EJP

0

Sur les plateformes Windows, le séparateur de ligne est CRLF (retour chariot/saut de ligne), qui est "\ r \ n". Sur les plateformes Unix, c'est juste LF, "\ n". Traditionnellement, sur les plates-formes Apple, il n'y avait que CR, "\ r".

Questions connexes