2010-07-22 2 views
3

В чем разница между newLine() и возвратом каретки ("\ r")? Какой из них лучше всего использовать?Разница между новостями() и возвратом каретки (" 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

К какому 'newLine()' вы относитесь? – skaffman

+0

@ skaffman .. см. Приведенный выше код, который я использую. – Manu

ответ

14

Предполагая, что вы имеете в виду это:

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

newLine является экологически агностик \r нет.

Так newLine предоставит вам \r\n на окнах, но \n на другую обстановку.

Однако вы не должны использовать это в JTextArea, и println будет работать нормально только с \n на окнах.

Редактировать теперь, когда я видел код и ваш комментарий

В вашей ситуации. Я думаю, вы должны использовать вашу собственную константу - \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

. Я создаю текстовый файл в среде unix с помощью java-кода. и передавая файл клиенту, но с его стороны они должны возвращать карету в текстовый файл. который я должен использовать newLine() или возврат каретки («\ r») – Manu

+1

Я бы использовал «\ r \ n», поскольку это будет отображаться правильно в окнах и большинстве текстовых редакторов unix. –

+0

Удвоение обратной косой черты неверно. – EJP

1

Написать разделитель строки. Строка разделителя строки определяется системным свойством и является номером необязательно одним символом новой строки ('\ n').

Источник: http://download.oracle.com/docs/cd/E17476_01/javase/1.5.0/docs/api/java/io/BufferedWriter.html

+0

Не отвечает на вопрос. Заказчику требуется возврат каретки. Поэтому он должен это написать. – EJP

9

В старые времена ASR-33 телетайпов (и, позже, точечно-матричные принтеры с путешествующий печатающих головок), то CR буквально вернула каретку влево, как в пишущая машинка, и LF продвинули бумагу. Механизм может перекрывать операции, если CR появился перед LF, поэтому символ новой строки всегда был CR-LF, т. Е. \ R \ n. Если вы вернетесь на передний план, потребовалось гораздо больше времени для печати. Unix была первой (только?) Системой, чтобы использовать только \ n в качестве стандартного разделителя строк. DOS/Windows этого не делал.

-1

основным Newline (\n) и возврат каретки (\r) является:

новая линия (\n) & возврат каретки (\r) и т последовательность выхода на Яве ..

новая линия (\n) :

когда-либо \n находится в исполнимости, JVM разбивает линию на 2 части, из которых мы разместили \n (escape последовательность) .. пример:

println("Stackover\nflow"); 

выход:

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

возврат каретки (\r):

данные или символ помещается после \r получить переутомляться с предыдущими символами, присутствующими в та же линия ...

пример:

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

JVM ничего не разбивает. * Line * * уже разделен * в силу новой строки. * Устройство *, которое он печатает * на *, может или не может вести себя так, как вы описали. JVM точно не участвует ни в одном из них. Слишком много дезинформации. -1 – EJP

0

На платформах Windows, линия сепаратор CRLF (возврат каретки/перевод строки), который является "\ г \ п". На платформах Unix это просто LF, «\ n». Традиционно на платформах Apple это было просто CR, «\ r».

Смежные вопросы