Lendo arquivo de dados

Olá turminha Javamen!

Implementei uma lagoritmo simples na qual o usuário entra com o Nome, Matricula e Turma do aluno e salva em arquivo.txt através do FileWriter conforme abaixo:

[code]import java.io.*;

import javax.swing.JOptionPane;

public class Teste {

/**
 * @param args
 * @throws IOException
 */
public static void main(String[] args) throws IOException {
	// TODO Auto-generated method stub

	FileWriter writer = new FileWriter("C:/Documents and 

Settings/Administrador/Desktop/texto/aluno.txt");
PrintWriter saida = new PrintWriter(writer);

	Aluno A1[] = new Aluno[20];
	int i;

	for (i = 1; i < 20; i++) {

		A1[i] = new Aluno();

		A1[i].setNome(JOptionPane.showInputDialog("Informe o nome do " + i + "º 

Aluno"));
A1[i].setMatricula(JOptionPane.showInputDialog("Informe a matricula do "

  • i + “º Aluno”));
    A1[i].setTurma(JOptionPane.showInputDialog("Informe a Turma do " + i + Ҽ
    Aluno”));

      	saida.println(A1[i].getNome()+ "\n " + "*" + A1[i].getMatricula()+"\n "+ 
    

"* " +A1[i].getTurma());
}
writer.close();
FileReader reader = new FileReader(“C:/Documents and
Settings/Administrador/Desktop/Texto/aluno.txt”);
BufferedReader leitor = new BufferedReader(reader);
String mostra = “”;

	while((mostra = leitor.readLine())!=null)
	{
		System.out.println("Linha:"+mostra);
	}
	reader.close();
}

}[/code]

Tenho agora um arquivo em formato txt que seria minha base de dados.
Dentro tenho algo do tipo:

Maria20011202
João20021201
Fernando20031205

e assim por diante…

Gostaria de saber como faço o caminho inverso, ou seja, com base neste aquivo extrair estes dados???

Desde já agradeço quem puder me dar uma luz!

Abraço

SkFogo

faça algo do tipo

BufferedReader reader = new BufferedReader(new FileReader(new File("seu_arquivo.txt")));
String [] dados;
String linha = null;
while(reader.ready()){
   linha = reader.readLine();
   dados = linha.split("*");
   System.out.println("Nome: " + dados[0]);
   System.out.println("Turma: " + dados[1]);
   System.out.println("Matricula: " + dados[2]);      
}

Mais ou menos isso…
:slight_smile:

Abraço!

:smiley: Blz, sou novato em java e estava pesquisando uma forma de armazenar/ler em txt’s, resolveram meu problema…

Obrigado.

Cassio valeu mesmo!

Cara deu certinho, só troquei o “*” por “#” pois tava dando um erro, acredito que seja devido ao sinal.
Eu tinha feito um vetor e tudo mas não estava usando a classe correta do java.io.*

Grande abraço e grato pela ajuda!!!

SkFogo

Olá galera!!

Seguinte, eu tava tentando fazer isso:

BufferedReader reader = new BufferedReader(new FileReader(new File("seu_arquivo.txt"))); String [] dados; String linha = null; while(reader.ready()){ linha = reader.readLine(); dados = linha.split("*"); System.out.println("Nome: " + dados[0]); System.out.println("Turma: " + dados[1]); System.out.println("Matricula: " + dados[2]); }

só que através de um Vector - caso eu aumente a quantidade de alunos não precise estanciar o limite do meu vetor.

Alguém poderia me dar uma luz?

Grato

SkFogo

skfogo,

Não entendi… O que vc quer aumentar, o número de linhas ou de colunas? Porque se for colunas, não tem problema, porque o split cria o array dinamicamente prá você.

Agora se for linhas, você poderia fazer algo assim:

package com.testing.file;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Vector;

public class AlunoTO {
	private String nome;
	private String turma;
	private String matricula;

	public AlunoTO(String nome, String turma, String matricula) {
		super();
		this.nome = nome;
		this.turma = turma;
		this.matricula = matricula;
	}

	public static void main(String[] args) throws IOException {
		Vector<AlunoTO> tos = getAlunosFromFile("res/alunos.txt");
		for (AlunoTO alunoTO : tos) {
			System.out.println("- Aluno: " + alunoTO.getNome());
		}
	}
	
	public static Vector<AlunoTO> getAlunosFromFile(String fileName) throws IOException {
		 Vector<AlunoTO> ret = new Vector<AlunoTO>();

		 BufferedReader reader = new BufferedReader(new FileReader(new File(fileName)));
		 String [] dados;
		 String linha = null;
		 
		 while(reader.ready()){
		    linha = reader.readLine();
		    dados = linha.split("#");
		    System.out.println("Nome: " + dados[0]);
		    System.out.println("Turma: " + dados[1]);
		    System.out.println("Matricula: " + dados[2]);
		    
		    ret.add(new AlunoTO(dados[0], dados[1], dados[2]));
		 }
		 
		 return ret;
	}
	
	public String getMatricula() {
		return matricula;
	}
	public void setMatricula(String matricula) {
		this.matricula = matricula;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getTurma() {
		return turma;
	}
	public void setTurma(String turma) {
		this.turma = turma;
	}
}

Que tal? :slight_smile:

fcoury Cara ficou show teu código.

Mas não consegui colocar o mesmo para rodar.
Da erro nas seguintes linhas:

Vector<AlunoTO> tos = getAlunosFromFile("res/alunos.txt"); BufferedReader reader = new BufferedReader(new FileReader(new File(fileName)));

Obs. Gostei da implementação por pacote.

Se puderes me da uma luz ficarei muito grato mesmo.

Forte Abraço

SkFogo

Amigo,

Tem como você me passar o erro para ver se é problema da sua versão do Java?

Obrigado!

Amigo fcoury

Desde já te agradeço pela dedicação.
Logo abaixo esta o erro!

Exception in thread "main" java.io.FileNotFoundException: res\alunos.txt (O sistema não pode encontrar o caminho especificado) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.<init>(Unknown Source) at java.io.FileReader.<init>(Unknown Source) at com.testing.file.AlunoTO.getAlunosFromFile(AlunoTO.java:31) at com.testing.file.AlunoTO.main(AlunoTO.java:22)

Abraço

SkFogo

O problema é que não existe o arquivo res/alunos.txt :slight_smile:

Você deve substituir essa chamada pelo local onde está seu arquivo (pode ser relativo como apenas “arquivo.txt” ou o caminho local, por exemplo “C:/Temp/Arquivo.txt”), ok?

Tenta aí e me avisa!

Abraços!