Line separator

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.

vo seguir seu conselho. mas qual a explicacao para essa de descobrir se o arquivo é binario?