Прайсы 2 CrUD для таблицы внутри файла Считать с консоли имя файла для операций CrUD Программа запускается с одним из следующих наборов параметров: -u id productName price quantity -d id Значения параметров: где id — 8 символов productName — название товара, 30 chars (60 bytes) price — цена, 8 символов quantity — количество, 4 символа -u — обновляет данные товара с заданным id -d — производит физическое удаление товара с заданным id (все данные, которые относятся к переданному id) В файле данные хранятся в следующей последовательности (без разделяющих пробелов): id productName price quantity Данные дополнены пробелами до их длины Пример: 19846 Шорты пляжные синие 159.00 12 198478 Шорты пляжные черные с рисунко173.00 17 19847983Куртка для сноубордистов, разм10173.991234 Требования: 1. Программа должна считать имя файла для операций CrUD с консоли. 2. При запуске программы без параметров список товаров должен остаться неизменным. 3. При запуске программы с параметрами "-u id productName price quantity" должна обновится информация о товаре в файле. 4. При запуске программы с параметрами "-d id" строка товара с заданным id должна быть удалена из файла. 5. Созданные для файлов потоки должны быть закрыты.
import java.io.*;
import java.util.ArrayList;

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String fileName = reader.readLine();
        reader.close();
        ArrayList<String> list = new ArrayList<String>();
        BufferedReader reader1 = new BufferedReader(new FileReader(fileName));

        while (reader1.ready()) {
            list.add(reader1.readLine());
        }
        reader1.close();

        if (args[0].equals("-u")) {
            String arg1 = args[1].length() > 8 ? args[1].substring(0, 8) : args[1];
            String arg2 = args[2].length() > 30 ? args[2].substring(0, 30) : args[2];
            String arg3 = args[3].length() > 8 ? args[3].substring(0, 8) : args[3];
            String arg4 = args[4].length() > 4 ? args[4].substring(0, 4) : args[4];

            int num = 0;

            for (int i = 0; i < list.size(); i++) {
                if (list.get(i).substring(0, 8).contains(arg1)) num = i;
            }

            String ss = String.format("%-8s%-30s%-8s%-4s", arg1, arg2, arg3, arg4);

            list.set(num, ss);

            BufferedWriter writer = new BufferedWriter(new FileWriter(fileName));

            for (int i = 0; i < list.size(); i++) {
                writer.write(list.get(i));
                if ((i < list.size() - 1)) writer.newLine();
            }
            writer.close();
        }

        if (args[0].equals("-d")) {
            String arg1 = args[1].length() > 8 ? args[1].substring(0, 8) : args[1];

            int num = 0;

            for (int i = 0; i < list.size(); i++) {
                if (list.get(i).substring(0, 8).contains(arg1)) num = i;
            }

            list.remove(num);

            BufferedWriter writer = new BufferedWriter(new FileWriter(fileName));

            for (int i = 0; i < list.size(); i++) {
                writer.write(list.get(i));
                if ((i < list.size() - 1)) writer.newLine();
            }
            writer.close();
        }
    }
}
Не понимаю, всё работает, но не проходит по 3му пункту