Удаляет строку без шума и пыли.
Или я что-то не понимаю по поводу "физического удаления"? не заNULLить же все надо?
package com.javarush.task.task18.task1828;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
/*
Прайсы 2
*/
public class Solution {
public static void main(String[] args) throws Exception {
if (args.length == 0) {
return;
}
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String file = bufferedReader.readLine();
List<Product> products = new ArrayList<>();
BufferedReader fileReader = new BufferedReader(new FileReader(file));
while (fileReader.ready()) {
Product product = getProduct(fileReader.readLine());
products.add(product);
}
fileReader.close();
switch (args[0]) {
case "-d": {
int id = Integer.parseInt(args[1]);
for (int i = 0; i < products.size(); i++) {
if (products.get(i).id == id) {
products.remove(i);
}
}
FileWriter fileWriter = new FileWriter(file);
for (Product product : products) {
fileWriter.write(String.valueOf(product) + "\n");
}
fileWriter.close();
}
case "-u": {
int id = Integer.parseInt(args[1]);
String productName = "";
for (int i = 2; i < args.length - 2; i++) {
productName += args[i] + " ";
}
if (productName.length() > 30) {
productName = productName.substring(0, 30);
}
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);
}
for (Product product: products) {
if (product.id == id) {
product.productName = productName;
product.price = price;
product.quantity = quantity;
}
}
FileWriter fileWriter = new FileWriter(file);
for (Product product : products) {
fileWriter.write(String.valueOf(product) + "\n");
}
fileWriter.close();
}
}
}
public static Product getProduct(String string) {
String id = string.substring(0, 8).trim();
String productName = string.substring(8, 38).trim();
String price = string.substring(38, 46).trim();
String quantity = string.substring(46, 50).trim();
return new Product(Integer.parseInt(id), productName, price, quantity);
}
}