Leitura num arquivo de texto longo

Precisava fazer leitura num arquivo de texto
muito longo, alguns milhões de linhas,
pedi ajuda mas acabei resolvendo
por mim mesmo, de qualquer forma agradeço
ao amigo que tentou me ajudar,
apresento o código abaixo para ajudar
a quem precisar.

import java.io.File;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class PROJETO {
	static String str = new String ( );
	private static final int	SIZE	= 6760975;
    static File file = new File ( "Codigos.txt" );
	private final static void Ler_Arquivo ( ) throws IOException {
		BufferedInputStream f = new BufferedInputStream (
				new FileInputStream ( file ) );
		byte [ ] barray = new byte [ SIZE ];
		while ( ( f.read ( barray, 0, SIZE)) != -1 )
		str = new String ( barray );
		System.out.println ( str );
		f.close ( );
	}
	public static void main ( String [ ] args ) throws Exception {
		Ler_Arquivo ( );
	}
}

Qual o tamanho do arquivo?

Você realmente precisa acumular todo o conteúdo do arquivo em memória para depois apresentar?
Se a resposta for sim, você precisa setar o-Xmx da máquina virtual fornecendo um limite maior de memória.

Se você simplesmente quer ler e apresentar as linhas lidas, você não precisa usar RandomAccessFile, basta fazer assim:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;

public class Projeto {

    public static void main(String[] args) throws Exception {
        File file = new File("Apostilas.txt");
        BufferedReader reader = new BufferedReader(new FileReader(file));
        String line = null;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }
        reader.close();
    }
}
1 curtida

O arquivo tem 2554173 linhas.
Seu programa leu 1989963, e travou
acionando um bip intermitente.
Faltaram aproximadamente 565000 linhas.

Qual o tamanho em bytes?
O limite padrão da memória heap do Java é de 64MB.
Mas você pode aumentar o limite usando a opção -Xmx da máquina virtual.

Então provavelmente seu arquivo é binário e não textual, você não deu detalhes a respeito e como estava utilizando um StringBuilder para acumular o valor lido, assumi que fosse um documento de texto.
O bip intermitente é porque ele leu algum byte que não tem uma representação textual e que faz o sistema operacional emitir um beep, como o '\a' na linguagem C por exemplo.
O que exatamente você quer fazer com o conteúdo lido?

Você pode configurar o tamanho máximo da memória heap através da opção -Xmx.

Exemplo para executar seu programa podendo expandir a heap em no máximo 2 giga bytes:

java -Xmx2G nome.do.pacote.NomeDaClasseMain

Primeiro muito obrigado por ter me respondido.

Tamanho do arquivo em bytes: 86939459.
Tamanho do arquivo em KB 84.902KB.

Este arquivo não é binário, e texto puro,
a origem veio da união de dezenas de apostilas
que transformei num arquivo úníco, e em seguida,
o converti para .txt.
Sobre a StringBuilder, não passou de meros testes
feito por mim mesmo tentando obter sem sucesso
melhor desempenho, já que sou iniciante em Java,
migrado do C.
O bip intermitente também acontece quando
tento abrir este arquivo em C sem alocar memória
com malloc, não sei se isto é um recurso próprio
do notebook, mas sei que está relacionado ao
estouro de memória.
O que desejo fazer com o conteúdo do arquivo?
O arquivo serve mesmo como testes para que
eu possa dominar a abertura de arquivos longos
como este pra no futuro está criando um editor
de textos com janelas gráficas em JavaFX,
Já qu tenho um bom domínio nisto.
Sou programador intermediário de linguagem C,
e abro tanto este arquivo como um outro quase
o dobro deste em tamanho com sucesso, alocando
memória com malloc() e liberando no final com free().
Tenho um programa em C criado por mim mesmo
que pede início e fim para a leitura das linhas
no (cmd) visto que o mesmo só imprime no máximo
10000 linhas, ele imprime e ainda permite uma
precisa pesquisa no texto extraído.

Problema resolvido, e ainda usei um outro
arquivo muito maior que o do início do tópico.
Vou postar aqui para ajudar quem precisar.
O código foi adaptado por mim para que atingisse
meus objetivos.
com ele consegui abrir um arquivo de texto
com mais de 4 milhões de linhas.

Total de linhas do arquivo -> 4777649
Tamanho do arquivo em KB -> 118.846KB
Tamanho do um arquivo em bytes -> 121697247

//Este programa está configurado para abrir
//um arquivo de texto de 4777648 de linhas
//Arquivo codigos.txt

 public class PROJETO {
	static String str = new String ( );
	private static final int	SIZE	= 6760975;
   static File file = new File ( "Codigos.txt" );
	private final static void Ler_Arquivo ( ) throws IOException {
		BufferedInputStream f = new BufferedInputStream (
				new FileInputStream ( file ) );
		byte [ ] barray = new byte [ SIZE ];
		while ( ( f.read ( barray, 0, SIZE)) != -1 )
		str = new String ( barray );
		System.out.println ( str );
		f.close ( );
	}
	public static void main ( String [ ] args ) throws Exception {
		Ler_Arquivo ( );
	}
}