Может я просто запарился с этой задачей, и свежий взгляд поможет мне увидеть какую-то элементарную ошибку?
package com.javarush.task.task18.task1828;
/*
Прайсы 2
*/
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();
if((args.length != 0) && (args[0].equals("-u"))){
/* Считываем строки из файла, и заносим их в ArrayList для дальнейшей обработки */
BufferedReader fileReader = new BufferedReader(new FileReader(filename));
String line;
ArrayList<String> list = new ArrayList<>();
while ((line = fileReader.readLine()) != null){
list.add(line);
}
fileReader.close();
/* Создаем новую строку с информацией о товаре (соединяем принятые параметры в одну строку) */
String id = args[1];
id = id.concat(" ").substring(0, 8);
String productName = args[2];
productName = productName.concat(" ").substring(0, 30);
String price = args[3];
price = price.concat(" ").substring(0,8);
String quantity = args[4];
quantity = quantity.concat(" ").substring(0,4);
String result = id.concat(productName.concat(price.concat(quantity)));
/* Проверяем, если в списке уже существует строка с принятым в параметрах id.
* если да, то на ее место записываем новую строку result, а старую удаляем, и завершаем цикл */
for(String s: list){
if(s.startsWith(args[1])){
list.add((list.indexOf(s)), result);
list.remove(s);
break;
}
}
/* Если файла с текущим id в списке не существует, добавляем новый товар в конец списка */
if(!(list.contains(result))){
list.add(result);
}
/* Перезаписываем данные в файл из уже обновленного списка */
BufferedWriter writer = new BufferedWriter(new FileWriter(filename));
for(String s: list) {
writer.write(s);
writer.newLine();
}
writer.close();
}
else if((args.length != 0) && (args[0].equals("-d"))){
/* Считываем строки из файла, и заносим их в ArrayList для дальнейшей обработки */
BufferedReader fileReader = new BufferedReader(new FileReader(filename));
String line;
ArrayList<String> list = new ArrayList<>();
while ((line = fileReader.readLine()) != null){
list.add(line);
}
fileReader.close();
/* находим в списке товар с указанным id и удаляем его */
for(String s: list){
if(s.startsWith(args[1])){
list.remove(s);
break;
}
}
/* Перезаписываем данные в файл из обновленного списка */
BufferedWriter writer = new BufferedWriter(new FileWriter(filename));
writer.write("");
for(String s: list) {
writer.write(s);
writer.newLine();
}
writer.close();
}
}
}