Xion, ну дай угадаю, перебирал с начала списка?
Пусть у нас есть список букв:
a b b a b a a ....
Мы хотим убрать из него буквы b, и перебираем его с начала.
Текущая буква A:
A b b a b a a ....
Ничего не делаем.
Переходим к следующей.
Текущая буква B:
a B b a b a a ....
Удаляем, следующие элементы смещаются на позицию:
a B a b a a ....
Переходим к следующей:
a b A b a a ....
Как видишь, следующую букву b мы из-за этого пропустили.
Отсюда настоятельная рекомендация: избегай модифицировать коллекцию в процессе перебора! Лучше (реально лучше в случае с файлами) - генерируй по ходу перебора новую коллекцию, куда попадают только "хорошие" элементы. Вместо того, чтобы пытаться удалять "плохие" из уже существующей.
Если создавать копию данных очень нежелательно, перебирай от конца к началу - тогда сместятся только те элементы, которые мы УЖЕ обработали, и потому это не помешает. Но с файлами это делать очень неудобно.