Все работает отлично, на базе предыдущей задачи "Прайсы" добавил метод для обновления и метод для удаления.
Коротко как работает: в лист товаров products записываются товары из файла, в методе обновления находим в листе объект с нужным нам id, меняем ему значения полей. После этого перезаписываем каждый элемент обновленного листа в файл.
В методе удаления по такому же принципу находим в листе с нашими товарами объект с нужным id, затем удаляем его из листа. Перезаписываем.
P.S. делать все в одном классе пробовал, не прошло. пробовал и без метода создания - тоже не прошло
package com.javarush.task.task18.task1828;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
public class CRUD {
/*public static void create(String fileName, String[] args, List<Product> products) throws IOException {
int id = 0;
for (Product product : products) {
if (product.id > id) id = product.id;
}
StringBuilder name = new StringBuilder();
for (int i = 1; i < args.length - 2; i++) {
name.append(args[i]).append(" ");
}
if (name.length() > 30) {
name.delete(30, name.length());
}
String price = args[args.length - 2];
if (price.length() > 8) {
price = price.substring(0, 8);
}
String quantity = args[args.length - 1];
if (quantity.length() > 4) {
quantity = quantity.substring(0, 4);
}
Product product = new Product(++id, name.toString().trim(), price, quantity);
try (FileWriter fileWriter = new FileWriter(fileName, true)) {
fileWriter.write("\n");
fileWriter.write(product.toString());
}
}*/
public static void update(String fileName, String[] args, List<Product> products) throws IOException {
int id = Integer.parseInt(args[1]);
StringBuilder name = new StringBuilder();
for (int i = 2; i < args.length - 2; i++) {
name.append(args[i]).append(" ");
}
if (name.length() > 30) {
name.delete(30, name.length());
}
String price = args[args.length - 2];
if (price.length() > 8) {
price = price.substring(0, 8);
}
String quantity = args[args.length - 1];
if (quantity.length() > 4) {
quantity = quantity.substring(0, 4);
}
int neededProductId = products.indexOf(products.stream().filter(product -> product.id == id).findFirst().get());
products.get(neededProductId).name = name.toString();
products.get(neededProductId).price = price;
products.get(neededProductId).quantity = quantity;
try (FileWriter fileWriter = new FileWriter(fileName)) {
for (Product product : products) {
fileWriter.write("\n");
fileWriter.write(product.toString());
}
}
}
public static void delete(String fileName, String[] args, List<Product> products) throws IOException {
int id = Integer.parseInt(args[1]);
products.remove(products.stream().filter(product -> product.id == id).findFirst().get());
try (FileWriter fileWriter = new FileWriter(fileName)) {
for (Product product : products) {
fileWriter.write("\n");
fileWriter.write(product.toString());
}
}
}
}