Тогда, объясняю в чем разница. Если ты пишешь в конец файла, для того, чтоб вывести записи, чей id больше заданного, тебе, если не считывать во временный массив, необходимо гарантированно прочесть все строки файла. Здесь ты можешь сэкономить разве что на условном выражении: после нахождения первой строки, удовлетворяющей условию, тебе не нужно делать проверку всех оставшихся т.к. заведомо известно, что все они имеют id больше заданного.
Если ты пишешь новые строки в начало файла, то тебе нужно будет считать ровно столько строк, сколько тебе нужно. Т.е. ты считываешь строки до тех пор, пока не встретишь строку, id которой _меньше_ заданного. Время записи в файл действительно увеличивается, поэтому, как я уже писал выше, данный метод имеет смысл использовать только в том случае, если ты читаешь файл _намного_ чаще, чем пишешь в него.