Salvar arquivo com a classe PrintWriter em java

Olá, pessoal!!

Então estou desenvolvendo um programa que gera uma sequencia numérica na verdade eu consigo salvar
em um arquivo .“txt” porém como é um JTextPane que recebe os dados e o mesmo é passado para a classe
PrinteWriter como “.append” ou “.println” ou “.print” mas ele não salva exatamente como é mostrado
no JTextPane ou seja, com espaço, ele salva tudo em uma única linha.

GOSTARIA SABER se é possível ele salvar exatamente como é mostrado no JTextPane?

veja:

public void salvarArquivo () throws FileNotFoundException {

	File arquivo = null;
	JFileChooser chooser = new JFileChooser();
	int resultado = chooser.showSaveDialog(null);
	FileFilter fileFilter = new FileNameExtensionFilter("Arquivo txt", ".txt");

	chooser.addChoosableFileFilter(fileFilter);

	if (resultado == JFileChooser.APPROVE_OPTION) {

		File salvarArquivoEscolhido = chooser.getSelectedFile();
		arquivo = salvarArquivoEscolhido;

		if (salvarArquivoEscolhido.exists() == true) {

			int selecionaOpcao = JOptionPane.showConfirmDialog(null, " O arquivo já existe, deseja sobrescrevê-lo?",
					null, JOptionPane.OK_CANCEL_OPTION);

			if (selecionaOpcao == JOptionPane.OK_OPTION) {


				try {
					
					String j = textPane.getText().toString();

					FileWriter fileWriter;
					fileWriter = new FileWriter (arquivo);					
					PrintWriter pw = new PrintWriter(fileWriter);
					pw.format(j);
					pw.close();

				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}

			}

		} else {

			
			try {
				
				String j = textPane.getText().toString();

				FileWriter fileWriter;
				fileWriter = new FileWriter (arquivo);
				PrintWriter pw = new PrintWriter(fileWriter);
				pw.format(j);
				pw.close();

			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		}

	}

	else {

		throw new FileNotFoundException();

	}




}

Você está invocando o método format, esse método recebe como primeiro parâmetro uma String de formataçãoo e em seguida os valores para substituição.

Utilize o método print para gravar o texto puro.

Eu dei uma refatorada em seu código removendo código duplicado e variáveis desnecessárias.

public void salvarArquivo () throws FileNotFoundException {
	JFileChooser chooser = new JFileChooser();
	chooser.addChoosableFileFilter(new FileNameExtensionFilter("Arquivo txt", ".txt"));
	int opcaoSelecionada = chooser.showSaveDialog(null);
	if (opcaoSelecionada == JFileChooser.APPROVE_OPTION) {
		boolean gravar = true;
		File arquivo = chooser.getSelectedFile();
		if (arquivo.exists()) {
			opcaoSelecionada = JOptionPane.showConfirmDialog(null, " O arquivo já existe, deseja sobrescrevê-lo?", null, JOptionPane.OK_CANCEL_OPTION);
			gravar = opcaoSelecionada == JOptionPane.OK_OPTION;
		}
		if (gravar) {
			try {
				String texto = textPane.getText();
				PrintWriter pw = new PrintWriter(new FileWriter (arquivo));
				pw.print(texto);
				pw.flush();
				pw.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

Então mais mesmo assim ele escreve tudo em uma unica linha na realidade teria que ficar assim veja:

esses numeros gerados dentros de JTextPane estão perfeitos, precisava que do mesmo jeito salva-se em um arquivo “.txt”, mas para chegar em todo essa lógica de números fui concatenando dentro de uma unica String as informações.

Não sei se poderia converter isso em um Objeto para não perder a formatação e depois jogar na classe PrintWriter

Posta o seu código completo. Imagens não ajudam muito.

Obrigado!
Consegui busquei na net aqui e achei isso e deu certo veja:

FileWriter fileWriter;
					fileWriter = new FileWriter (arquivo);					
					PrintWriter pw = new PrintWriter(fileWriter);
					
					String s = textPane.getText();
					s = s.replaceAll("\n", System.getProperty("line.separator"));
					pw.print(s);						
					
					
					pw.close();
1 curtida