Olá Wagner, tudo bem com você?
Peço desculpas na demora para obter retorno.
A classe BufferedWriter
usa um buffer em seu funcionamento na hora de escrever, ao contrário da classe OutputStreamWriter
. Na prática, o buffer guarda 'chunks' ou pedaços da saída e despeja eles todos de uma vez, ao não ser que tenha leitura de entrada de dados do usuário, nesse caso a cada leitura ele fará a saída.
Beleza, mas qual o ganho de se utilizar um buffer?
O buffer traz ganho em desempenho na hora de escrever caracteres, arrays e strings. Como assim? Vamos imaginar a não utilização de um buffer: a cada string escrita, é feito todo o processo de codificação em um charset e escrita. Para uma string ou duas pode não trazer quedas de desempenho, mas vamos imaginar um fluxo de dado de um milhão de strings por exemplo. Nesse caso, o aumento no número de operações vai trazer queda significativa no desempenho, enquanto com um buffer, vai ser aberta a codificação uma vez, o buffer vai guardar as um milhão de strings e jogar para a saída uma única vez, trazendo ganho de performance.
Quanto ao método newLine()
da classe BufferedWriter, ele traz a portabilidade para pular linhas. O caractere especial '\n'
é muito interessante também na hora de pular linhas, mas não é adotado universalmente por todos os sistemas como quebra de linha, existem sistemas que fazem apenas a troca de linha com o caractere '\n'
, mas não voltam para o inicio de linha, causando efeitos indesejados. O método newLine()
garante que a quebra de linha seja feita corretamente independente do sistema utilizado, sendo assim, uma opção mais segura.
Fico à disposição.
Um grande abraço e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!