ae pessoal,
tipo,
tenho uma classe
Pessoas implements Serializable por exemplo
e tenho um programa
que le, e outro q insere e grava esses objetos dessa
classe
no caso da gravação
eu estou usando:
FileOutputStream os = new FileOutputStream("pessoas.dat");
ObjectOutputStream oarq = new ObjectOutputStream(os);
ObjectOutputStream oarq = new ObjectOutputStream(os);
for (int i = 0; i < vetorPessoas.size(); i++)
{
pessoa = (Pessoas) vetorPessoas.elementAt(i);
oarq.writeObject(pessoa);
}
oarq.close();
e para
leitura:
FileInputStream is = new
FileInputStream(path);
ObjectInputStream iarq = new ObjectInputStream(is);
vetorPessoas.clear();
while (true) {
try {
pessoa = (Pessoas)iarq.readObject();
if (pessoa != null)
vetorPessoas.add(pessoa);
else System.out.println("Nullpointer ERROR");
}
catch (EOFException e) {
break;
}
catch(ClassNotFoundException e) {
JOptionPane.showMessageDialog(null, "Class not defined", "Error", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
}
ObjectInputStream iarq = new ObjectInputStream(is);
vetorPessoas.clear();
while (true) {
try {
pessoa = (Pessoas)iarq.readObject();
if (pessoa != null)
vetorPessoas.add(pessoa);
else System.out.println("Nullpointer ERROR");
}
catch (EOFException e) {
break;
}
catch(ClassNotFoundException e) {
JOptionPane.showMessageDialog(null, "Class not defined", "Error", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
}
até aí tdo bem, o
programa funciona perfeitamente, porem, se eu quiser gravar pessoas sem ter lido
elas antes, o programa vai sobescrever o arquivo. Para nao sobescrever eu
habilito o append no FileOutputStream, mas daí começa o programa de leitura, lê
os dados gravados na 1a vez e depois, nao sei como, ele gera
uma exceção de io.FileNotFoundException.
Alguem sabe como eu
faço para ler um inserir dados em um arquivo com objetos
serializados sem precisar le-los antes?
Valeu
Tales