BufferedInputStream выбрасывает ошибки нехватки памяти в Android - PullRequest
1 голос
/ 18 ноября 2011

Я пытаюсь использовать BufferedInputStream для загрузки внешнего файла DICOM, но в итоге ему не хватает памяти. Когда я использовал InputStream, это никогда не происходило (я делал это, когда загружал файл из папки assets).

Я создал свои собственные потоки производителя-потребителя для буферизации файла, поэтому мне фактически не нужен BufferedInputStream, но мне действительно нужно использовать mark() и reset(), которые недоступны в FileInputStream.

Как мне обойти это? Есть ли другой тип InputStream, который я могу использовать с File, который имеет функции mark() / reset()? Можно ли как-нибудь очистить буфер до того, как BufferedInputStream выдаст ошибку? Или я должен найти способ использовать mark() вместо этого?

Спасибо за ваш вклад.

1 Ответ

3 голосов
/ 18 ноября 2011

Чтобы mark и reset работали с буферизованным вводом, точки файла между mark и reset должны оставаться в памяти.

Обходные пути зависят от того, что вы на самом деле пытаетесь сделать; если вам просто нужно начать чтение с известного места, возможно, RandomAccessFile.

...