С моей точки зрения - задача выполнена.
Есть две обертки - одна для FileWriter другая для FileReader
Данные перед чтением и записью привожу в формат, который указан в задании, пишу посимвольно.
Непонятка только с аргументами комманд лайна.
Или productName должен иметь возможность содержать пробел и тогда его нужно вбивать в аргументах вызова в " " или же не понятно вообще как аргументы командной строки парсить. Слить весь args в строку и брать подстроки по 8, 30 и так далее символов не выйдет, потому как если имя будет, например содержать 15 символов, после него сразу в такой строке будет price и следующие аргументы. Если брать по максимально возможным длинам из объединенного args - быстро вылетишь за границы строки. В общем - решил что подразумевается что productName может быть многострочным. А что подразумевали авторы курса - не известно.
Вот аргс
Скрин файла после записи не ложу - вон он там с классами лежит, и так видно что записало все по формату.
Собственно, что может раздражать валидатор?
Ну и в общем если кто-то какие-то ошибки увидит - буду благодарен

19846 Шорты пляжные синие 159.00 12
198478 Шорты пляжные черные с рисунко173.00 17
19847983Куртка для сноубордистов, разм10173.991234
19847984Шорты пляжные зелен 151.0 32