Dúvida básica: quebra de linha com "\n"

Amigos,

Criei um arquivo txt e ao final de cada linha do mesmo eu acrescento “\n” assim:

“linha de arquivo” + “\n”

Porém qdo abro o arquivo no bloco de notas as linhas não aparecem uma abaixo da outra.

Como eu resolvo esse problema?

Muito obrigado,

Marques

Ola Marques

NO windows a quebra de linha é diferente do Linux.

Separador de linha em unix/linux: LF (Line Feed) = ‘\n’ - hexa 0A
Separador de linha em dos/windows: CR+LF (Carriage Return / Line Feed) = ‘\r\n’ - hexa 0D0A

Ou seja, você deve usar \r\n no Windows, ou então, se você estiver usando a classe BufferedWriter, você pode usar o método newLine() que ele ja identiica o SO e faz a quebra de linha corretamente

2 curtidas

Acho que o único programa do Windows que não aceita arquivos-texto no formato Unix é o próprio Notepad (Bloco de Notas). Outros programas da própria Microsoft - Wordpad, MS Office Word, MS Office Excel, MS Visual Studio etc. aceitam arquivos-texto no formato Unix tranqüilamente.

String newLineCharacter = System.getProperty( "line.separator" );

se usar o método println da class PrintWriter será que no resolve o problema?

Como de costume há 200 jeitos diferentes de resolver o mesmo problema em Java:

println - É o recomendado se você usar algo derivado de PrintWriter.
printf ("%n") - se você usar Java 5.0 e printf.
System.getProperty (“line.separator”) - se você não está usando PrintWriter mas outra coisa.
newLine - se você usar BufferedWriter.

Se o programa java gerou o arquivo no linux ele vai ficar com o \n no final das linhas, voce pode forçar o tipo de quebra do windows colocando explicitamente o \r\n ou, depois que o arquivo já foi criado no linux/unix se o usuário vai abri-lo no windows dá para consertar assim: Na hora de transferir o arquivo use o ftp/scp com modo ascii, neste modo o utilitário converte os caracteres automaticamente. Também é possível utilizar um programa existente em algumas distribuições linux: unix2dos. O contrário também existe: dos2unix.
[]s