Leitura de arquivo texto X performace

Tenho que ler linhas de um arquivo texto, validar trechos dessa linha e gravar no banco de dados ou em outro arquivo texto considerando caracteres acentuados, o problema é que o arquivo possui centenas de milhares de linhas e beira 1GB :shock:.

O processo de validação consome bastante tempo, e não gostaria de gastar ainda mais num processo de leitura/escrita ineficiente.
A escrita no arquivo texto só é relizada quando houver alguma inconsistência na linha, caso contrário é gravado na base.

Qual a melhor forma que vocês me sugerem para fazer esse processo?

No modelo de testes estou utilizando:

BufferedReader leitor = new BufferedReader(  new InputStreamReader ( new FileInputStream ( file ), "ISO-8859-1" ), 10*1024*1024 );

e

[code]BufferedWriter saida = new BufferedWriter ( new OutputStreamWriter ( new FileOutputStream ( arquivo, false ), “UTF-8” ) );

while( leitor.ready() ) {
linha = leitor.readLine();
validações
gravações
}[/code]