Lendo arquivos em bytes!

Dae galera!!! Eu criei uma classe que lê um arquivo byte a byte, queria saber como eu faço pra verificar se existe uma determinada palavra dentro dele! Fiz assim, mas com arquivos no formato rtf não tá funcionando!! E outra coisa, como eu não sei o tamanho do arquivo que eu vou ler, como eu faço pra deixar isso mais dinâmico? Pois o método length da classe RandoAccessFile me retorna um long!!! Queria saber como vocês normalmente implementam essa solução!!!
Valeu!!!

[code]import java.io.EOFException;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;

public class CopyFile {

private static RandomAccessFile arquivo;
private static RandomAccessFile arquivoSaida;	
private static StringBuffer buffer = new StringBuffer();
private static byte[] bufferByte = new byte[ 1024 ];
public static void main(String[] args) {

	String strToken = "";
	try {
		arquivo = new RandomAccessFile( new File("C:\\temp\\dados.rtf"), "r");// Arquivo lido
		arquivoSaida = new RandomAccessFile( new File("C:\\dados.rtf"), "rw"); // Arquivo gerado
		for( int i = 0; i < arquivo.length(); i++ ) {
			bufferByte[ i ] = arquivo.readByte();
			//arquivoSaida.write( bufferByte); // Retorna um inteiro
			//arquivoSaida.write( arquivo.readByte()); // Retorna byte
		    buffer.append((char)bufferByte[ i ]);
			if( buffer.indexOf( "Java" ) != -1 )
				strToken = buffer.substring( buffer.indexOf( "Java") + 4 );
		}
		System.out.println( strToken );
		arquivoSaida.write( bufferByte ); // Retorna um inteiro

	} catch( EOFException e ) {
		e.printStackTrace();
	} catch (FileNotFoundException e) {
		e.printStackTrace();
	} catch (IOException e) {
		e.printStackTrace();
	} finally {
		try {
			arquivo.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

}[/code]