Boa Noite, é o seguinte eu gostaria de saber como eu posso fazer para recuperar um objeto com as informações gravadas em um arquivo de texto.
No exemplo ai em baixo ele grava uma String do objeto TexteArquivosDeTesto ai quero recupera essa informação porém o método recupera retornar um objeto TexteArquivosDeTesto, o exemplo meio banal mesmo, porém só quero saber a melhor formar de fazer isso usando arquivo de texto.
teria que criar os objetos e setar os seus atributos com o que tem salvo no arquivo?
importjava.io.FileNotFoundException;importjava.io.FileReader;importjava.io.FileWriter;importjava.io.IOException;publicclassTexteArquivosDeTesto{Stringteste;publicTexteArquivosDeTesto(Stringteste){// TODO Auto-generated constructor stubthis.teste=teste;}publicstaticvoidmain(String[]args)throwsIOException{FileWriterfile;try{file=newFileWriter("teste.txt");TexteArquivosDeTestot=newTexteArquivosDeTesto("teste");file.write(t.teste);file.close();t.recupera();}catch(IOExceptione1){// TODO Auto-generated catch blocke1.printStackTrace();}}publicTexteArquivosDeTestorecupera(){returnnull;}}
Não é o melhor, nem o mais rápido, mas um modo que tem bastante suporte na API e em frameworks é serializar os objetos para XML, e vice-versa. Independente do método, você precisa entrar em acordo em usar uma estrutura padrão para representar o que quiser. JSON, XML, Properties ou o teu próprio formato próprio, tanto faz desde que decida por um.
No caso de fazer arquivos binários, e não texto, procure pelas classes ObjectOutputStream e ObjectInputStream.
D
dead_fly_
então eu posso usar a interface Serializable, para gravar e recuperar objetos de arquivos de textos?
B
Bruno_Laturner
Depende de quem for gravar no arquivo, se eles usarem o Serializable, precisa, se não usarem, não precisa. Depende.
D
dead_fly_
certo, eu não posso usar seriazable, então seu implementar dessa formar a gravação e a leitura e criar um objeto a partir dessa leirura está correta?
obs, só quero usar arquivo texto.
publicTexteArquivosDeTestorecupera()throwsIOException{FileReaderr=null;try{r=newFileReader("teste.txt");}catch(FileNotFoundExceptione){// TODO Auto-generated catch blocke.printStackTrace();}BufferedReaderin=newBufferedReader(r);Stringlinha=in.readLine();TexteArquivosDeTestot1=newTexteArquivosDeTesto(linha);returnt1;}
B
Bruno_Laturner
Se esse TexteArquivosDeTesto(linha); conseguir transformar texto para objetos, está certo. Aliás, é uma das melhores formas de fazer isso.
Depois adapte para ler múltiplas linhas e gerar uma coleção de objetos, se quiser recuperar mais de um.
D
dead_fly_
bom agora estou gravando mais objetos e quero ler os mesmo, eles eles sempre estão sendo gravados 1 do lado do outro, colo o /n porém não funciona. Alguém sabe o que fazer?
publicvoidsalvar(Lojaloja){try{FileWriterfile=newFileWriter("prova2.txt");Set<String>chaves=loja.getArmazens().keySet();Iterator<String>iteChave=chaves.iterator();while(iteChave.hasNext()==true){Stringlocal=iteChave.next();file.write(local);// file.write(" *");Iterator<Caixa>itecaixa=loja.getArmazen(local).getCaixas().iterator();while(itecaixa.hasNext()==true){Caixacaixa=itecaixa.next();file.write(caixa.getTipoChocolate()+"/n");}}// }file.close();}catch(IOExceptione){// TODO Auto-generated catch blocke.printStackTrace();}}publicLojacarregar()throwsIOException{FileReaderreader=null;Lojaloja=null;try{reader=newFileReader(("prova2.txt"));BufferedReaderin=newBufferedReader(reader);String[]recupera=newString[1];recupera[0]=in.readLine();System.out.println(recupera[0]);for(inti=0;i<recupera.length;i++){}loja=newLoja();// loja.addArmazem(local)// Caixa caixa = new Caixa();}catch(FileNotFoundExceptione){// TODO Auto-generated catch blocke.printStackTrace();}returnloja;}
D
dead_fly_
bom eu consegui fazer adicionar, mais agora eu estou salvando em uma linha dois tipos de objetos ai resolvi, adicionar um asteristico para diferenciar quando começa, um objeto para eu poder recriar o mesmo na hora de ler.
Alguém sabe me dizer se está certo? eu fazer assim?
D
dead_fly_
alguém sabe me dizer se está certo?
por favor estou no aguardo.