Boa tarde… Tenho uma aplicação web que em determinado ponto gera um arquivo .txt para download… Esse é um arquivo que contém um leiaute para ser importado para outro sistema…
Gostaria de saber por que quando gero esse arquivo, no windows, ele faz a quebra de linha certinho, mas no linux não…
Estou utilizando a classe File para gerar o arquivo, e a classe PrintWriter para escrever através do método println…
println usa a quebra de linha apropriada para o sistema onde está rodando.
No Windows, a quebra de linha são os caracteres CR e LF (’\r\n’), e no Linux a quebra de linha é apenas o caracter LF (’\n’).
Provavelmente você está tentando usar o Windows Notepad (que nesse ponto é extremamente estúpido) para visualizar o arquivo gerado no Linux, não?
E
entanglement
Se você sabe que o arquivo obrigatoriamente tem de ter “\r\n” em cada linha, não importando se for no Windows ou no Linux, troque todos os “println” por “print (… + “\r\n”)”. É boçal mas às vezes temos de fazer coisas boçais.
aluisiodsv
Os caracteres em hexadecimal 0D e 0A podem ser representados, respectivamente, por \r e \n. Estes caracterizam a quebra de linha em uma codificação em baixo nível ASCII. O notepad do windows é ruim o suficiente para não identificar isso. Porém, qualquer outro reconhece tranquilamente. E não há diferença disso do windows pro linux!
dahenz
Vou tentar… o problema é que o usuario vai usar sim o notepad… é web!!! preciso evitar esse tipo de problema… a quebra de linhas deve ser feita corretamente… vou utilizar sua ideia entanglement… valew a todos…
aluisiodsv
Na verdade estes caracteres 0D (\r) e 0A(\n) são sim reconhecidos pelo notepad do windows.