Подскажите, пожалуйста, что не так. Тестировал на файле в UTF-8, все работает, как задано в условии. Сообщения валидатора:
При запуске программы с параметрами "-u id productName price quantity" должна обновится информация о товаре в файле.
При запуске программы с параметрами "-d id" строка товара с заданным id должна быть удалена из файла.
Поток чтения из файла не был закрыт.
Последнее сообщение и вовсе не понятно, если бы не закрылся поток чтения, переименование не прошло бы. Остается предположить, что валидатор не имеет прав записи в каталог с исходным файлом, только непосредственно в исходный файл, но это как-то странно. Тогда остается только один выход — заливать весь исходный файл в память; но кто сказал, что он туда поместится?