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:
importjava.io.*;importjavax.swing.JOptionPane;publicclassTeste{/** * @param args * @throws IOException */publicstaticvoidmain(String[]args)throwsIOException{// TODO Auto-generated method stubFileWriterwriter=newFileWriter("C:/Documents and Settings/Administrador/Desktop/texto/aluno.txt");PrintWritersaida=newPrintWriter(writer);AlunoA1[]=newAluno[20];inti;for(i=1;i<20;i++){A1[i]=newAluno();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();FileReaderreader=newFileReader("C:/Documents and Settings/Administrador/Desktop/Texto/aluno.txt");BufferedReaderleitor=newBufferedReader(reader);Stringmostra="";while((mostra=leitor.readLine())!=null){System.out.println("Linha:"+mostra);}reader.close();}}
Tenho agora um arquivo em formato txt que seria minha base de dados.
Dentro tenho algo do tipo:
Maria*2001*1202
João*2002*1201
Fernando*2003*1205
e assim por diante....
Gostaria de saber como faço o caminho inverso, ou seja, com base neste aquivo extrair estes dados???
Blz, sou novato em java e estava pesquisando uma forma de armazenar/ler em txt’s, resolveram meu problema…
Obrigado.
S
skfogo
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
S
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
fcoury
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:
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
fcoury
Amigo,
Tem como você me passar o erro para ver se é problema da sua versão do Java?
Obrigado!
S
skfogo
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
fcoury
O problema é que não existe o arquivo res/alunos.txt
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?