Хороший способ прочитать большой файл - это одновременно буферизовать его.
Не уверен в точных методах API, которые вы могли бы использовать для этого, но для аудио, видео и т. Д. Это довольно стандартная практика - считывать небольшое количество файла в память, обрабатывать его и удалять из памяти по мере продолжить через файл.