Vantagens de ObjectOutputStream e RandomAccessFile

Olá Galera
Quais são as vantagens em usar as classes ObjectOutputStream e RandomAccessFile para armazenar dados num arquio binario e se puder as desvantagens também.

Você já chegou a fazer uma busca no google para saber o que essas classes fazem?

Qual foi o resultado?

ObjectOutputStream:
Vantagens:

  • Fácil de usar;

Desvantagens:

  • Pouco controle sobre o formato do arquivo de saída (o que é péssimo para interoperabilidade);
  • Dependência de implementações de terceiros;
  • Muitas vezes serializa muito mais dados que o necessário (o que é péssimo para transmissões de rede);

RandomAccessFile:
Vantagens:

  • Permite acesso a qualquer posição do arquivo, inclusive navegação (gravar posições, mover para frente, para trás, etc);
  • Muito controle
  • Não tão baixo nível quanto um OutputStream direto (implementa a interface DataInput, que tem diversos métodos de auxílio);

Eu nunca uso o ObjectInput ou ObjectOutput streams. Dificilmente vale a pena pagar por tantas desvantagens.

Desvantagens:

  • Mais trabalhoso (você deve serializar campo a campo);
  • Não é associável aos streams (como o BufferedInputStream). Portanto, o ideal é ler e gravar grandes volumes de dados usando os métodos que aceitam arrays como parâmetros.

Valeu