Em Java, usamos um BuffedWriter e o método newline(). Anteriormente, era possível alterar o caractere de nova linha alterando a propriedade do sistema "Line.separator". Infelizmente, o método Newline parece usar System.LineSeparator(), que é inicializado logo no início a partir da propriedade "Line.separator". Como podemos alterar o caractere a ser usado pelo método Newline() sem alterar newline() pela chamada de write()? Precisamos alterá-lo por programação. Não podemos alterar o argumento da JVM, pois o programa de pesquisa define o separador de linhas que ele deve usar.
Funciona no Java 1.8 e não no 11. Não vemos nada na documentação do Java que possa nos impedir de fazer isso.
Este é um problema semelhante a Como posso forçar o Java stdout no Windows a usar o separador de linhas "\n" ?.
System.setProperty("line.separator","\n");
não mudaráSystem.lineSeparator()
. Aplicar uma alteração de propriedade do sistema-Dline.separator=
não é fácil em algumas linhas de comando, mas pode ser feito usandojava @file ...
como na outra resposta.No Windows, você pode salvar os argumentos do separador de linha em um arquivo de
CMD.EXE
:Em alguns bash você pode usar aspas ANSI C
java -Dline.separator=$'\n'
- veja Configurando o separador de linhas da Java VM .O ideal é declarar o seu próprio
BufferedWriter
(ou PrintWriter como em outra resposta) para que a alteração da propriedade do sistema seja por uso e não afete toda a JVM:Se você executar o comando acima,
java @gnu.args ...
ele mostrará o tratamento do separador de linhas para cada caso:Se você executar o comando acima,
java @windows.args ...
ele mostrará: