Byte [] и java.lang.OutOfMemoryError читают файл по битам

Я пытаюсь написать ридер, который читает файлы по битам, но у меня проблема с большими файлами. Я пытался прочитать файл с 100 МБ, и это заняло более 3 минут, но это сработало.

Однако потом я попробовал файл с 500 мб, но он даже не запустился. Из-за этой строки:

byte[] fileBits = new byte[len];

Сейчас я ищу решения и не могу их найти. Может быть, кто-то решил это и может поделиться кодом, советами или идеей.

if (file.length() > Integer.MAX_VALUE) {
    throw new IllegalArgumentException("File is too large: " + file.length());
}

int len = (int) file.length();
FileInputStream inputStream = new FileInputStream(file);

try {
    byte[] fileBits = new byte[len];
    for (int pos = 0; pos < len;) {
        int n = inputStream.read(fileBits, pos, len - pos);
        if (n < 0) {
            throw new EOFException();
        }
        pos += n;
    }

inputStream.read(fileBits, 0, inputStream.available());
inputStream.close();

Ответы на вопрос(4)

Ваш ответ на вопрос