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?
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class TexteArquivosDeTesto {
String teste;
public TexteArquivosDeTesto(String teste) {
// TODO Auto-generated constructor stub
this.teste = teste;
}
public static void main(String[] args) throws IOException {
FileWriter file;
try {
file = new FileWriter("teste.txt");
TexteArquivosDeTesto t = new TexteArquivosDeTesto("teste");
file.write(t.teste);
file.close();
t.recupera();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
public TexteArquivosDeTesto recupera() {
return null;
}
}
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.
então eu posso usar a interface Serializable, para gravar e recuperar objetos de arquivos de textos?
Depende de quem for gravar no arquivo, se eles usarem o Serializable, precisa, se não usarem, não precisa. Depende.
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.
public TexteArquivosDeTesto recupera() throws IOException {
FileReader r = null;
try {
r = new FileReader("teste.txt");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
BufferedReader in= new BufferedReader(r);
String linha =in.readLine();
TexteArquivosDeTesto t1= new TexteArquivosDeTesto(linha);
return t1;
}
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.
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?
public void salvar(Loja loja) {
try {
FileWriter file = new FileWriter("prova2.txt");
Set<String> chaves = loja.getArmazens().keySet();
Iterator<String> iteChave = chaves.iterator();
while (iteChave.hasNext() == true) {
String local = iteChave.next();
file.write(local);
// file.write(" *");
Iterator<Caixa> itecaixa = loja.getArmazen(local).getCaixas()
.iterator();
while (itecaixa.hasNext() == true) {
Caixa caixa = itecaixa.next();
file.write(caixa.getTipoChocolate()+"/n");
}
}
// }
file.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public Loja carregar() throws IOException {
FileReader reader = null;
Loja loja = null;
try {
reader = new FileReader(("prova2.txt"));
BufferedReader in = new BufferedReader(reader);
String[] recupera = new String[1];
recupera[0] = in.readLine();
System.out.println(recupera[0]);
for (int i = 0; i < recupera.length; i++) {
}
loja = new Loja();
// loja.addArmazem(local)
// Caixa caixa = new Caixa();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return loja;
}
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?
alguém sabe me dizer se está certo?
por favor estou no aguardo.