Я пытаюсь написать ридер, который читает файлы по битам, но у меня проблема с большими файлами. Я попытался прочитать файл на 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();