Problemas ao gerar arquivo codificado em UTF-8

Preciso fazer a seguinte manipulação de arquivo:
[list]recuperar um arquivo com codificação UTF-8 gerado por outro programa (cujo endereço será passado ao meu programa como parâmetro);[/list][list]retirar os 3 primeiros bytes desse arquivo (que corresponde ao Byte Order Marker);[/list][list]salvar o resultado em um novo arquivo UTF-8.[/list]

O problema é que quando realizo a manipulação, o arquivo é automaticamente convertido para ANSI (não importa todas as medidas que eu faça). E o que eu quero é que o arquivo permaneça como UTF-8, mas sem o Byte Order Marker (conhecido também como BOM) :

    public static void tratarArquivoLog() {
                
        java.io.File arquivoEntrada = new java.io.File("C:\\log_25042011.txt");
        java.io.File arquivoSaida = new java.io.File("C:\\log_25042011_final.txt");
        
        FileInputStream f = null;
        FileChannel ch = null;
        BufferedWriter out = null;

        try {


            f = new FileInputStream(arquivoEntrada);
            ch = f.getChannel();
            MappedByteBuffer mb = ch.map(MapMode.READ_ONLY, 0L, ch.size());

            out = new BufferedWriter(
                    new OutputStreamWriter(new FileOutputStream(arquivoSaida), Charset.forName("UTF-8"))
                    );

            int contBytes = 0;

            while (mb.hasRemaining()) {

                //Se o contador de bytes for menor que 3, não grava o byte e parte para o byte subseqüente.
                if (contBytes < 3) {
                    contBytes++;
                    mb.get();
                } else {
                    out.write(mb.get());
                }

            }

        } finally {

            if (out != null) {
                out.flush();
                out.close();
            }

            if (ch != null) {
                ch.close();
            }

            if (f != null) {
                f.close();
            }

        }
    }

Os 3 bytes eu até consegui retirar… mas o arquivo muda a codificação. Alguém pode ajudar?

Tente assim

f = new FileInputStream(arquivoEntrada);
InputStreamReader isr = new InputStreamReader(f, "UTF-8");

Não deu muito certo não… o Notepad++ acusa como ANSI

Vou fazer assim. Somente remover os caracteres e ver se o sistema do cliente aceita.
Caso consiga, bastará esses passos (remoção dos bytes do BOM).

Acredito que o editor de texto não está detectando o arquivo como UTF-8 justamente porque removi o BOM.