На вывод всё работает как по условию, но валидаторы выдает кучу ошибок
При запуске программы с параметрами "-c productName price quantity" в конец файла должна добавится новая строка с товаром.
Товар должен иметь следующий id, после максимального, найденного в файле.
Форматирование новой строки товара должно четко совпадать с указанным в задании.
Созданные для файлов потоки должны быть закрыты.
package com.javarush.task.task18.task1827;
import java.io.*;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List;
/*
Прайсы
*/
public class Solution {
public static void main(String[] args) throws Exception {
if (args.length == 0){
return;
}
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileString = reader.readLine();
File file = new File(fileString);
reader.close();
List<String> fileLines = Files.readAllLines(file.toPath());
int maxId = 0;
for (String s : fileLines){
int thisId = Integer.parseInt(s.substring(0, 8).trim());
maxId = Math.max(maxId, thisId);
}
switch (args[0]) {
case "-c" :
int id = maxId + 1;
String productName = args[1];
if (productName.length() > 30) {
productName = productName.substring(0, 30);
}
String price = args[2];
if (price.length() > 8){
price = price.substring(0,8);
}
String quantity = args[3];
if (quantity.length() > 4){
quantity = quantity.substring(0, 4);
}
String finalString = String.format("%-8d%-30s%-8s%-4s",id, productName, price, quantity);
try (BufferedOutputStream writer = new BufferedOutputStream(new FileOutputStream(fileString, true)))
{
writer.write(finalString.getBytes());
writer.write("\n".getBytes());
}
}
}
}