[RESOLVIDO] Quebra de linha em arquivos texto

4 respostas
thegoergen

Olá pessoal,

Estou com um problema simples, mas em que não achei uma solução.
Tenho um ArrayList de Strings. Quero gravar essas Strings em um arqivo, uma por linha. Mas o \n não funciona, é simplesmente ignorado...
Segue abaixo o método que utilizo.

private void salvaCollection(Collection<String> a, String nomeArquivo) {

        try {
            FileOutputStream oStream = new FileOutputStream(nomeArquivo); // ou usando um File com argumento
            OutputStreamWriter osw = new OutputStreamWriter(oStream);
            Writer writer = new BufferedWriter(osw);

            StringBuffer texto = new StringBuffer();
            for (String palavra : a) {
                texto.append(palavra + " \n");
            }
            System.out.println("CONTEÚDO DESTINO: " + texto.toString()); // Apenas para testar se o problema não está no StringBuffer
            writer.write(texto.toString());

            writer.flush();
            writer.close();
        } catch (Exception e) {
            e.printStackTrace();
        } 
    }

Já tentei gravar linha a linha no arquivo, mas também não funcionou.

Obrigado.

4 Respostas

tguerra

Oi, thegoergen.

Substitui teu \n para:

se for linux: \n
se for windows: \r\n

Espero que ajude.

E

Você não precisaria ter feito nada disso. Bastaria ter feito isto aqui:

private void salvaCollection(Collection<String> a, String nomeArquivo) {  
	try {  
		PrintWriter pw = new PrintWriter (nomeArquivo);
		for (String palavra : a ) {
			pw.println (palavra);
		}
		pw.close();
	} catch (IOException ex) {
		ex.printStackTrace();
	}
}

A propósito, eu no seu lugar faria algo assim:

private void salvaCollection(Collection<String> a, String nomeArquivo) throws IOException {  
	PrintWriter pw = new PrintWriter (nomeArquivo);
	for (String palavra : a ) {
		pw.println (palavra);
	}
	pw.close();
}
thegoergen

Muito obrigado pelas respostas!

Usei o PrintWriter, como o entanglement disse.

A propósito, a Exception que ele lança é a FileNotFoundException, e não a IOException.

X

No meu funcionou com este simples exemplo by TGuerra!
“\r\n” fez com que o FileWriter gravasse com quebra de linha a cada nova inserção de dados (pressionando a tecla ENTER)
Abaixo, código completo.
Obrigado!!!

tguerra:
Oi, thegoergen.

Substitui teu \n para:

se for linux: \n
se for windows: \r\n

Espero que ajude.

import java.io.File;

import java.io.FileWriter;

import java.io.IOException;

import javax.swing.JOptionPane;

/**


  • EXERCICIO Readers and Writers (I/O Streams) 02 - Leitor de Arquivos
  • @author VitorMiotto
    */

public class SerieDeNomes {

File arquivo;
FileWriter escritor;
String arquivoNomes;

public SerieDeNomes() throws IOException {
    arquivo = new File("C:/texto.txt");
    escritor = new FileWriter(arquivo);
    arquivoNomes = "";

    while (!arquivoNomes.equals("SAIR")) {
        arquivoNomes = JOptionPane.showInputDialog(null, "Digite o NOME a ser inserido no arquivo.\nPara encerrar a inserção de dados, digite \"SAIR\"!");
        escritor.write("\r\n" + arquivoNomes); // "\r\n" faz com que o escritor execute a quebra de linha a cada enter digitado.
        System.out.println("" + arquivoNomes);
    }

    escritor.close();
}

public static void main(String[] args) throws IOException {
    SerieDeNomes serie = new SerieDeNomes();
}

}

Criado 20 de dezembro de 2011
Ultima resposta 1 de nov. de 2012
Respostas 4
Participantes 4