Problema para salvar texto de JTextPane em arquivo.txt, espaços, pulo de linha são ignorados

2 respostas
D

Eu abro um código em pascal com formato .txt, e o coloco no jTextPane, ele aparece com a formatação completa, mas quando eu mando ele salvar no mesmo arquivo, todos os espaços, pulos de linha e tabulação somem.
Eu estou salvando dessa forma

private void jMISalvarArquivoActionPerformed(java.awt.event.ActionEvent evt) {
        try {
            // TODO add your handling code here:
            BufferedWriter saida = new BufferedWriter(new FileWriter(file.getAbsolutePath()));
            saida.write(jTCodigo.getText());

            saida.close();
        } catch (IOException ex) {
            Logger.getLogger(Interface.class.getName()).log(Level.SEVERE, null, ex);
            JOptionPane.showMessageDialog(null, "erro ao salvar arquivo");
        }

    }

o código que eu coloco é esse

program teste;
var k,l: integer;
aux: real;

procedure P (n:integer)
begin
	k:= k + n;
end

Begin
	//recebe zero
	k:=0;
	P(3);
	write("esta funcionando corretamente");
	read(a);

	while (b<>2) do
	begin
		if a<0 then
			a:=a+b;
			b:=a/b;
	end;
	
	if a = b then
		a:=b;
End.

Depois de salvo ele fica assim

program teste;var k,l: integer;aux: real;procedure P (n:integer)begink:= k + n;endBegin//recebe zerok:=0; [....]

Interessantemente na hora que eu copiei o código zuado no bloco de notas e coloquei aqui, ele apareceu na forma normal, com a formatação completa, o que me leva a crer que no processo o código usado pra espaços, pulo de linha e tabulação foram trocados por um que o notepad não reconhece.

De qual notação pra qual notação foi? Essa substituição é causada pela função .getText() ou na hora de salvar?
Se for por causa do .getText() eu sei que é possível corrigir com o .replace(), mas se for na hora de salvar eu não faço ideia.

2 Respostas

B

Faça isto.

BufferedWriter saida = new BufferedWriter(new FileWriter(file.getAbsolutePath()));  
         String texto = jTCodigo.getText().replace ("\n", System.getProperty ("line.separator"));
         saida.write(texto);
D

Perfeito, funcionou exatamente do jeito que eu queria, vlw :smiley:

Criado 5 de setembro de 2010
Ultima resposta 8 de set. de 2010
Respostas 2
Participantes 2