Странно, что с первым параметром валидатор принимает, а сделанный по аналогии второй параметр нет. Но уже голова не варит. Прошу помощи.
При запуске программы с параметрами "-d id" строка товара с заданным id должна быть удалена из файла.
package com.javarush.task.task18.task1828;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
/*
Прайсы 2
*/
public class Solution {
public static void main(String[] args) throws IOException {
if(args.length == 0) return;
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String fileName = bufferedReader.readLine();
List<String> list = new ArrayList<>();
FileReader reader = new FileReader(fileName);
FileWriter writer = new FileWriter(fileName, true);
BufferedReader readerWrapper = new BufferedReader(reader);
BufferedWriter bufferedWriter = new BufferedWriter(writer);
String id = "";
String result = "";
String productName = args[2];
String price = args[3];
String quantity = args[4];
while (readerWrapper.ready()){
list.add(readerWrapper.readLine());
}
readerWrapper.close();
if (args[0].equals("-u")) {
for (int i = 0; i < list.size(); i ++){
id = list.get(i).substring(0,8).trim();
if (id.equals(args[1])){
result = check(id, 8) + check(productName, 30)
+ check(price, 8) + check(quantity, 4);
list.set(i, result);
break;
}
}
for (String str : list){
bufferedWriter.write(str);
bufferedWriter.newLine();
}
bufferedWriter.close();
} else if (args[0].equals("-d")){
if (list.size() == 0) return;
for (int i = 0; i < list.size(); i ++){
id = list.get(i).substring(0,8).trim();
if (id.equals(args[1])){
list.remove(i);
break;
} else return;
}
bufferedWriter.write("");
for (String str : list){
bufferedWriter.write(str);
bufferedWriter.newLine();
}
bufferedWriter.close();
}
writer.close();
}
public static String check(String name, int check){
if (name.length() <= check){
while (name.length() != check){
name += " ";
}
} else name = name.substring(0, check);
return name;
}
}