[quote=pablosaraiva]Vamos por partes, como diria nosso amigo Jack.
Para persistir um objeto em um arquivo, o objeto deve implementar a interface Serializable.
Segue abaixo o código da classe Cliente que vou usar no exemplo:
import java.io.Serializable;
public class Cliente implements Serializable{
private static final long serialVersionUID = 1L;
String indice;
String nome;
String maisUmDado;
Cliente () {
}
Cliente(String indice, String nome, String maisUmDado) {
this.indice = indice;
this.nome = nome;
this.maisUmDado = maisUmDado;
}
public String getIndice() {
return indice;
}
public void setIndice(String indice) {
this.indice = indice;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getMaisUmDado() {
return maisUmDado;
}
public void setMaisUmDado(String maisUmDado) {
this.maisUmDado = maisUmDado;
}
}
Abaixo segue o código comentado explicando como você vai persistir e recuperar o objeto:
import java.io.EOFException;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class EDIndice {
public static void main(String[] args) {
// Ok, aqui vamos criar três instâncias de cliente
Cliente c1 = new Cliente("1", "Cliente1", "Dado1");
Cliente c2 = new Cliente("2", "Cliente2", "Dado2");
Cliente c3 = new Cliente("3", "Cliente3", "Dado3");
/*
* Abaixo segue o código que mostra como você pode persistir tais
* objetos direto para um arquivo.
*/
ObjectOutputStream out;
try {
out = new ObjectOutputStream(new FileOutputStream("dados.dat"));
out.writeObject(c1);
out.writeObject(c2);
out.writeObject(c3);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
// Simples né?
/*
* Agora o código que mostra como ler tais objetos do arquivo
*/
ObjectInputStream in;
try {
in = new ObjectInputStream(new FileInputStream("dados.dat"));
Cliente cliente = (Cliente) in.readObject();
System.out.println(cliente.getNome());
while (cliente != null) {
cliente = (Cliente) in.readObject();
System.out.println(cliente.getNome());
}
in.close();
} catch (EOFException eof) {
/*
* Essa exception é disparada toda vez que o fim
* do arquivo é alcançado, não recomendo colocar
* printStackTrace aqui.
*/
} catch (Exception e) {
e.printStackTrace();
}
}
}
O arquivo de índice você pode criar da mesma forma que criamos o arquivo acima.
Se você quiser por exemplo um arquivo de índice que tenha a ordem alfabética dos clientes, ele precisa conter apenas os índices do cliente. Com esse índice, basta você percorrer o arquivo com os dados de forma mais ágil, sabendo onde estão os clientes que você quer buscar.
Tente a partir do que já te forneci terminar o exercício. Se não conseguir concluir, poste as dúvidas aqui que te ajudo a continuar.
Um abraço, boa sorte!
[/quote]
Desculpe reviver o tópico!
Estou fazendo algo parecido com isso e não entendi muito bem como você cria os
índices.
No meu caso tenho um arquivo parecido com isso:
ISBN|Titulo|Autor1|Autor2|Autor3|Ano#9788588833043|Design e avaliação de
interfaces humano-computador|Rocha, Heloisa Vieira da|Baranauskas, Maria
Cecilia Calani||22003#0470723378|Research methods in human-computer
interaction|Lazar, Jonathan|Feng, Jinjuan Heidi|Hochheiser, Harry|2010#
3642237673
e tenho que criar um indice usando os # e | para achar as informações