При тестировании все работает, как положено (добавил комментарии к коду).
package com.javarush.task.task18.task1828;
/*
Прайсы 2
*/
import java.io.*;
import java.lang.reflect.Array;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) throws IOException {
// если нет аргументов - завершить программу
if (args.length != 0) {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
reader.close();
BufferedReader reader1 = new BufferedReader(new FileReader(fileName));
// сюда будем считывать строки с файла
ArrayList<String> list = new ArrayList<>();
String s;
// считываем строки с файла
while ((s = reader1.readLine()) != null) {
list.add(s);
}
reader1.close();
if (args[0].equals("-u")) {
// сюда будем помещать id всех строк
ArrayList<String> ids = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
ids.add(list.get(i).substring(0, 8));
ids.set(i, ids.get(i).trim());
}
// ищем строку, которую будем редактировать
for (int i = 0; i < ids.size(); i++) {
if (args[1].equals(ids.get(i))) {
// создаем строку (на основе StringBuilder) по параметрам
StringBuilder sb = new StringBuilder();
sb.append(ids.get(i));
for (int j = 0; j < 8 - (ids.get(i).length()); j++) {
sb.append(" ");
}
sb.append(args[2]);
for (int j = 0; j < 30 - (args[2].length()); j++) {
sb.append(" ");
}
sb.append(args[3]);
for (int j = 0; j < 8 - (args[3].length()); j++) {
sb.append(" ");
}
sb.append(args[4]);
s = sb.toString();
// заменяем старую строку обновленной
list.set(i, s);
break;
}
}
// записываем строки в файл
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.write("\n");
}
}
writer.close();
}
else if (args[0].equals("-d")) {
ArrayList<String> ids = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
ids.add(list.get(i).substring(0, 8));
ids.set(i, ids.get(i).trim());
}
for (int i = 0; i < ids.size(); i++) {
if (args[1].equals(ids.get(i))) {
list.remove(i);
}
}
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.write("\n");
}
}
writer.close();
}
}
}
}