Gente, tenho uma aplicação que é um editor de texto aqui e to me quebrando muito com o line separator.
Pra ler o arquivo eu leio linha por linha (char por char é muiiiito lento) aí tenho que adicionar o line separator em cada linha
StringBuilder builder = new StringBuilder();
// faz o for aqui
builder.append(linha + System.lineSeparator();
o problema é que se vc abre um arquivo binario, tipo um pdf ele acaba perdendo a formatação e quebra. outro problema é que no windows o line separator é um \r\n e a JTextArea considera como padrao um zn só então sempre que eu edito um texto todos os newline que ue faço sao \n e nao \r\n. tem como mudar o padrao da JTextArea? outro problema é que \r\n sao dois caracteres e na JTextArea vc tem que pular por cima dois dois (tu aperta a seta pro ladao duas vezes ate ela pular pra linha de baixo).
Eu recomendaria fazer o seguinte: ao ler o arquivo linha por linha, remover o “\r” caso existir. Assim você normaliza tudo para o formato Unix/Linux/MacOS, que é mais lógico e gasta menos espaço.
Ao trabalhar com ele na JTextArea, usar apenas ‘\n’ para separar as linhas.
Ao gravar o arquivo de volta, usar ‘\r\n’ ou ‘\n’ de acordo com uma configuração no seu programa, não exatamente de acordo com o sistema operacional. É porque mesmo no Windows eu posso querer gravar em formato Unix/Linux/MacOS, onde o separador é apenas ‘\n’.
Além disso, se você detectar que um arquivo é binário (por exemplo, se houver um byte 00 nos primeiros 1 KB do seu arquivo, provavelmente ele é binário) você tem de chavear para um editor de arquivos binários.