Добрый день! Не могу найти ошибку.
Есть сомнение еще: выписал файл в список (list), из его строк выделил подстроки (id) во второй список (idList). Индекс определенного элемента в списке idList ведь будет соответствовать индексу товара из первоначального списка list?
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();
BufferedReader fileReader = new BufferedReader(new FileReader(fileName));
ArrayList<String> list = new ArrayList<>(); //читаем файл построчно в список
while (fileReader.ready()) {
list.add(fileReader.readLine());
}
fileReader.close();
ArrayList<String> idList = new ArrayList<>(); //составляем список из всех id
for (String s : list) {
idList.add(s.substring(0, 8));
}
if (args.length != 0 && args[0].equals("-u")) { //если начинается с -u
String idArgs = args[1];
for (String idFromList : idList) { //удаляем объект с таким же индексом из выведенного списка
if (idArgs.equals(idFromList)) {
list.remove(idList.indexOf(idFromList));
//вопрос: индексы элемента из списка товаров из файла и выделенного из него списка id одинаковые?
if (args[1].length() < 8) { //форматируем параметры из args[] по требованиям
while (args[1].length() < 8)
args[1] = args[1] + " ";
}
String id = String.format("%-8s", args[1].substring(0, 8));
if (args[2].length() < 30) {
while (args[2].length() < 30)
args[2] = args[2] + " ";
}
String productName = String.format("%-30s", args[2].substring(0, 30));
if (args[3].length() < 8) {
while (args[3].length() < 8)
args[3] = args[3] + " ";
}
String price = String.format("%-8s", args[3].substring(0, 8));
if (args[4].length() < 4) {
while (args[4].length() < 4)
args[4] = args[4] + " ";
}
String quantity = String.format("%-4s", args[4].substring(0, 4));
String updated = "\n" + id + productName + price + quantity; //получаем обновленный товар
list.add(updated); //добавляем в список товаров
BufferedWriter writer = new BufferedWriter(new FileWriter(fileName));
for (String product : list) {
writer.write(product);
} //перезаписываем файл списком из которого удалили старый товар и добавили новый
writer.close();
}
}
} else if (args.length != 0 && args[0].equals("-d")) { //иначе если начинается с -d
String idArgs = args[1];
for (String idFromList : idList) { //удаляем объект с таким же индексом из выведенного списка строк из файла
if (idArgs.equals(idFromList)) {
list.remove(idList.indexOf(idFromList));
}
BufferedWriter writer = new BufferedWriter(new FileWriter(fileName));
for (String product : list) {
writer.write(product); //перезаписываем файл списком из которого удалили требуеый товар по id
}
writer.close();
}
}
}
}