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