Problema com "\n" ao carregar arquivo

9 respostas
V

Fala galera,
Estou tendo dificuldades na hora de manipular o “\n” do arquivo.
Quando coloco a String pra imprimir, a mesma imprime com o \n, deixando em uma única linha.
Alguém pode me ajudar?

public void carregarCadastros() throws IOException{
		BufferedReader in = new BufferedReader(new FileReader(this.caminho));
		String str;
		while (in.ready()) {
			str = in.readLine();
			String[] informacoes = str.split(";");
			cadastros.add(new Cadastro(Integer.parseInt(informacoes[0]),informacoes[1],informacoes[2],
						informacoes[3],informacoes[4],informacoes[5],informacoes[6]));
		}
		in.close();
	}

public class Teste {
	public static void main(String[] args) {
		GerenteCadastro g = new GerenteCadastro("cadastros.txt");
		try {
			g.carregarCadastros();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		List<Cadastro> listaCadastroAux= g.getListaCadastros();
		for(Cadastro c : listaCadastroAux){
			System.out.println(m.getDetalhes());
		}

9 Respostas

ViniGodoy

Já tentou com o Scanner?

public void carregarCadastros() throws IOException{ Scanner in = new Scanner(new File(this.caminho)); while (in.hasNextLine()) { str = in.nextLine(); String[] informacoes = str.split(";"); cadastros.add(new Cadastro(Integer.parseInt(informacoes[0]),informacoes[1],informacoes[2], informacoes[3],informacoes[4],informacoes[5],informacoes[6])); } in.close(); }

V

Também tentei com Scanner;

Olha a saída:

Primeira Linha\nSegunda Linha
ViniGodoy

Pode anexar o arquivo? E como.você está gerando a saída?

V

Em anexo o arquivo.

A saída está da seguinte forma:

public class Teste {  
    public static void main(String[] args) {  
        GerenteCadastro g = new GerenteCadastro("cadastros.txt");  
        try {  
            g.carregarCadastros();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
          
        List<Cadastro> listaCadastroAux= g.getListaCadastros();  
        for(Cadastro c : listaCadastroAux){  
            System.out.println(m.getDetalhes());  
        }
ViniGodoy

O \n é uma sequência de escape especial, que o compilador do Java entende como enter.

Ela só existe como enter em Strings, declaradas em seu programa. Em arquivos, o \n é o próprio enter (lembre-se que o compilador não roda sobre seu arquivo externo).
Simplesmente coloque o conteúdo na linha debaixo. Ou faça você mesmo um replace("\n", “\n”); a cada readline().

V

Não entendi a ideia do “\n”.
Fiz isso e apareceu do mesmo jeito na saída

ViniGodoy

Você fez assim?

public void carregarCadastros() throws IOException{ Scanner in = new Scanner(new File(this.caminho)); while (in.hasNextLine()) { str = in.nextLine().replace("\\n", "\n"); String[] informacoes = str.split(";"); cadastros.add(new Cadastro(Integer.parseInt(informacoes[0]),informacoes[1],informacoes[2], informacoes[3],informacoes[4],informacoes[5],informacoes[6])); } in.close(); }

ViniGodoy

E porque você escreve um \n ao invés de simplesmente dar um enter?

ViniGodoy

Faça assim:

public void carregarCadastros() throws IOException{ Scanner in = new Scanner(new File(this.caminho)); in.useDelimiter("\\\\n|\\r\\n|\\n}]+"); while (in.hasNext()) { str = in.next(); String[] informacoes = str.split(";"); cadastros.add(new Cadastro(Integer.parseInt(informacoes[0]),informacoes[1],informacoes[2], informacoes[3],informacoes[4],informacoes[5],informacoes[6])); } in.close(); }

Aí configuro o scanner para encarar como quebra de linha o caracter de quebra de linha, ou o texto \n.

Criado 5 de fevereiro de 2012
Ultima resposta 6 de fev. de 2012
Respostas 9
Participantes 2