Тестирую у себя локально, все работает. Но валидатор со мной не согласен.
package com.javarush.task.task18.task1827;

import java.awt.image.AreaAveragingScaleFilter;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/*
Прайсы
*/

public class Solution {
    public static void main(String[] args) throws Exception {
        args = new String[]{"-c", "Шорты пляжные синие", "172.00", "17"};

        class LogItem {
            Integer id;
            String productName;
            String price;
            String quantity;

            public LogItem(Integer id, String productName, String price, String quantity) {
                if(String.valueOf(id).length() > 8){
                    String stringId = String.valueOf(id).substring(0,8);
                    id = Integer.valueOf(stringId);
                }
                if (productName.length() > 30){
                    productName = productName.substring(0,30);
                }
                if (price.length() >  8){
                    price = price.substring(0,8);

                }
                if (quantity.length() > 4) {
                    quantity = quantity.substring(0,4);
                }
                this.id = id;
                this.productName = productName;
                this.price = price;
                this.quantity = quantity;
            }

            @Override
            public String toString() {
                return String.format("%-8d%-30s%-8s%-4s", id, productName, price, quantity);
            }
        }

        BufferedReader reader = null;
        FileReader fileReader = null;
        FileWriter fileWriter = null;
        BufferedReader lineReader = null;
        ArrayList<LogItem> log = new ArrayList<>();
        try {
            reader = new BufferedReader(new InputStreamReader(System.in));
            String sourceFile = reader.readLine();
            fileReader = new FileReader(sourceFile);
            fileWriter = new FileWriter(sourceFile, true);
            lineReader = new BufferedReader(fileReader);
            while (lineReader.ready()) {
                String temp = lineReader.readLine();
                Integer tempId = Integer.valueOf(temp.substring(0,8).trim());
                String tempProductName = temp.substring(8,38);
                String tempPrice = temp.substring(38,46).trim();
                String tempQuantity = temp.substring(46).trim();
                log.add(new LogItem(tempId, tempProductName, tempPrice, tempQuantity));
            }
            if (args.length != 0) {
                if (args[0].equals("-c")) {
                    Integer newId = 0;
                    for (LogItem item : log) {
                        if (item.id > newId) {
                            newId = item.id;
                        }
                    }
                    newId++;
                    log.add(new LogItem(newId, args[1], args[2], args[3]));
                    fileWriter.write("\n");
                    fileWriter.write(log.get(log.size() - 1).toString());
                }
            }
        } finally {
            reader.close();
            fileWriter.close();
            fileReader.close();
            lineReader.close();
        }
    }
}