169 похожих чатов

Всем привет. Кто подскажет. Как прочитать большой файл? Пробовал три

способа в итоге OutOfMemoryError. Размер файла 40мб.

13 ответов

16 просмотров
Sasha- Автор вопроса

Я пробовал для какого то одного метода что на скрине читать в отдельном потоке ошибка OutOfMemoryError все равно. Вот так.

Ты же получается читаешь огромный файл(допустим книга или что-то вроде того) И текст этот выводишь сразу. Мб лучше по частям? Да и в любом случае такие операции надо делать в IO

Sasha- Автор вопроса
Макс Провоторов
Ты же получается читаешь огромный файл(допустим кн...

Щас посмотрим. Мне уже так надоело честно скажу. Интересно intellij idea прочитает файл размером 40мб. Хотя это наверное особенности этого андроида дурацкого.

Sasha
Щас посмотрим. Мне уже так надоело честно скажу. ...

Да тут IDE не причем. Ты же запускаешь на устройстве все это

Sasha
screenshot Я пробовал для какого то одного метода что на скри...

Если так то надо скажем в том цикле читать по 5000 строк, и приплюсовывать к созданной ранее. Ну и вообще на 40 мб файле с памятью будут проблемы, редакторы такие файлы подгружают в память кусками

Сергей П.
Если так то надо скажем в том цикле читать по 5000...

Да и это удобнее для пользователя, если реализовать по страницам. Всем хорошо

Sasha
screenshot Я пробовал для какого то одного метода что на скри...

Как временное решение что бы без затыка на этом работать дальше: Добавь android:largeHeap="true" в манифест, даст больше памяти. Если файл условно больше 40мб пиши юзеру отказ что мол большой слишком.

Sasha
screenshot Я пробовал для какого то одного метода что на скри...

Загуглите, что значит данная ошибка, при чем тут поток вообще?

Можно try catch на OOM и тогда уже писать отказ юзеру без вылета. Тоже времянка пока не написано нормально, с работой по частям.

Нет, нельзя try catch поймать данную ошибку

Сергей П.
Можно try catch на OOM и тогда уже писать отказ юз...

Вот кстати где то бы увидеть тот самый алгоритм чтения текста по кускам. Если честно вот такого алгоритма не видел в опенсурсе

Алексей Соловьев
Нет, нельзя try catch поймать данную ошибку

В java enterprise это стандартный прием, опять андроид чудит. Впрочем в андроиде такого кода не видел ни разу, да

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта