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

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

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

13 ответов

12 просмотров
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 это стандартный прием, опять андроид чудит. Впрочем в андроиде такого кода не видел ни разу, да

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Ребят в СИ можно реализовать ООП?
Николай
33
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Карта сайта