Вы можете использовать файл произвольного доступа. Держите указатель на байт, который вы читаете, и другой на байт, который вы пишете. Заполните буфер данными и, по мере чтения, считайте строки. Если вам нечего удалить, сбросьте канал на указатель записи и выведите буфер, затем сбросьте канал на указатель чтения. Если вы найдете строку, которую хотите удалить, выведите буфер в эту точку по индексу записи, затем увеличивайте указатель чтения до тех пор, пока не найдете конец строки, а затем выведите остаток буфера (при необходимости переполните буфер), повторите для каждой удаляемой строки.