A linguagem java permite a leitura e escrita direta de objetos em arquivos. O objeto deve, necessariamente, implementar a interface Serializable. Para isso basta incluir na declaração da classe a implementação conforme exemplo abaixo:
classe <nome_da_classe> implements Serializable {
}
Adicionando essa implementação o objeto poderá ser usado em operações de entrada e saída de arquivos. Para manipular a leitura e escrita de objetos em streams utilizamos os objetos inObjectStream e OutObjectStream, respectivamente. Apresentamos abaixo um exemplo que ilustra a gravação de objetos seguida da leitura e impressão na tela.
Exemplo_ 2_4_6: leitura do arquivo usando o objeto scanner.
import java.io.*; public class exemplo_2_4_6 { public static void main(String[] args) throws IOException, ClassNotFoundException { // Criação de um array de objetos do tipo pessoa pessoa[] pessoas = new pessoa[5]; pessoas[0]= new pessoa("André","Sr.",'M'); pessoas[1]= new pessoa("Paulo","Sr.",'M'); pessoas[2]= new pessoa("Maria","Sra.",'F'); pessoas[3]= new pessoa("Aline","Srs.",'F'); pessoas[4]= new pessoa("Carlos","Dr.",'M'); //GRAVAÇÃO DOS OBJETOS EM UM ARQUIVO File outFile= new File("objects.dat"); FileOutputStream outFileStream= new FileOutputStream(outFile); ObjectOutputStream outObjectStream= new ObjectOutputStream(outFileStream); for(int i=0;i<5;i++){ outObjectStream.writeObject(pessoas[i]); } outObjectStream.close(); //LEITURA DAS INFORMAÇÔES NO ARQUIVO pessoa[] pessoaslidas = new pessoa[5]; File inFile= new File("objects.dat"); FileInputStream inFileStream= new FileInputStream(inFile); ObjectInputStream inInputStream= new ObjectInputStream(inFileStream); for (int i=0;i<5;i++){ //Lê cada objeto e coloca no array de entrada. pessoas[i] = (pessoa) inInputStream.readObject(); System.out.println(pessoas[i].Nome); System.out.println(pessoas[i].Tratamento); System.out.println(pessoas[i].sexo); } inInputStream.close(); } } public class pessoa implements Serializable{ public String Nome; public String Tratamento; public char sexo; public pessoa (String Nome, String Tratamento, char sexo){ this.Nome=Nome; this.Tratamento = Tratamento; this.sexo = sexo; } }