[RESOLVIDO] Quebra de linha em arquivos texto

4 respostas
T

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

T

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();
}
T

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