Добрый день, коллеги! В файл всё пишется как надо, а Валя ругается... может где ошибся я? Подскажите пожалуйста
package com.javarush.task.task18.task1827;
/*
Прайсы
CrUD для таблицы внутри файла.
Считать с консоли имя файла для операций CrUD.
Программа запускается со следующим набором параметров:
-c productName price quantity
Значения параметров:
где id - 8 символов.
productName - название товара, 30 символов.
price - цена, 8 символов.
quantity - количество, 4 символа.
-c - добавляет товар с заданными параметрами в конец файла, генерирует id самостоятельно, инкрементируя максимальный id, найденный в файле.
В файле данные хранятся в следующей последовательности (без разделяющих пробелов):
id productName price quantity
Данные дополнены пробелами до их длины.
Пример:
19846 Шорты пляжные синие 159.00 12
198478 Шорты пляжные черные с рисунко173.00 17
19847983Куртка для сноубордистов, разм10173.991234
Требования:
1. Программа должна считать имя файла для операций CrUD с консоли.
2. В классе Solution не должны быть использованы статические переменные.
3. При запуске программы без параметров список товаров должен остаться неизменным.
4. При запуске программы с параметрами "-c productName price quantity" в конец файла должна добавится новая строка с товаром.
5. Товар должен иметь следующий id, после максимального, найденного в файле.
6. Форматирование новой строки товара должно четко совпадать с указанным в задании.
7. Созданные для файлов потоки должны быть закрыты.
*/
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
reader.close();
if (args.length > 0 && args[0].equals("-c")) {
try (FileInputStream in = new FileInputStream(fileName);
FileOutputStream out = new FileOutputStream(fileName, true)){
BufferedReader filereader = new BufferedReader(new InputStreamReader(in));
ArrayList<String> arrayList = new ArrayList<>();
while (filereader.ready()) {
arrayList.add(filereader.readLine());
}
filereader.close();
//System.out.println("lol");
Integer lastID = Integer.parseInt(arrayList.get(arrayList.size()-1).substring(0, 8).trim());
lastID++;
//StringBuilder sb1 = new StringBuilder();
StringBuilder sb = new StringBuilder(50);
String line = Arrays.toString(args);
line = line.replaceAll("\\d", "");
line = line.replaceAll("-c", "");
//System.out.println(line);
String id = (lastID).toString();
if (id.length() <= 8) {
sb.append(id);
for (int i = 8 - id.length(); i > 0; i--) {
sb.append(" ");
}
} else {
sb.append(id.substring(0, 8));
}
String productName = line.replaceAll("\\p{Punct}", "").trim();
//System.out.println(productName);
if (productName.length() <= 30) {
sb.append(productName);
for (int i = 30 - productName.length(); i > 0; i--) {
sb.append(" ");
}
} else {
sb.append(productName.substring(0, 30));
}
String price = args[args.length - 2];
if (price.length() <= 8) {
sb.append(price);
for (int i = 8 - price.length(); i > 0; i--) {
sb.append(" ");
}
} else {
sb.append(price.substring(0, 7));
}
String quantity = args[args.length - 1];
if (quantity.length() <= 4) {
sb.append(quantity);
for (int i = 4 - quantity.length(); i > 0; i--) {
sb.append(" ");
}
} else {
sb.append(quantity.substring(0, 3));
}
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out));
writer.newLine();
writer.write(sb.toString());
writer.flush();
writer.close();
//System.out.println(sb.toString());
}} else {}
}
}