Тестил - всё работает. Но валидатор не пускает. Потоки закрыты((
package com.javarush.task.task18.task1828;


import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;

/*
Прайсы 2
*/

public class Solution {
    public static void main(String[] args) throws IOException {
        Scanner scannerName = new Scanner(System.in);
        String fileName = scannerName.nextLine();
        scannerName.close();

        // считываем строки в массивчик
        Scanner scanner = new Scanner(new File(fileName));
        ArrayList<String> arr = new ArrayList<>();


        while (scanner.hasNext()) {
            arr.add(scanner.nextLine());
        }

        scanner.close();


        // апдейт
        if (args.length != 0 && args[0].equals("-u")) {
            FileWriter fileWriter = new FileWriter(fileName, false);
            PrintWriter printWriter = new PrintWriter(fileWriter, false);

            // находим строку по индексу и меняем её на новую
            for (int i = 0; i < arr.size(); i++) {
                String index = arr.get(i).substring(0, 7).trim();

                if (index.equals(args[1])) arr.set(i, String.format("%-8s%-30s%-8s%-4s", args[1], args[2], args[3], args[4]));
            }

            for (String s : arr) {
                printWriter.println(s);
            }

            fileWriter.close();
            printWriter.close();
        }
        // удаление
        else if (args.length != 0 && args[0].equals("-d")) {
            FileWriter fileWriter = new FileWriter(fileName, false);
            PrintWriter printWriter = new PrintWriter(fileWriter, false);

            // находим строку по индексу и просто не записываем её
            for (String s : arr) {
                String index = s.substring(0, 7).trim();

                if (!index.equals(args[1]))
                    printWriter.println(s);
            }

            fileWriter.close();
            printWriter.close();
        }
    }
}