Тестил - всё работает. Но валидатор не пускает. Потоки закрыты((
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();
}
}
}