Код работает лучше чем я ожидал) много раз тестил, но валидор говорит что не так
package com.javarush.task.task18.task1827;
/*
Прайсы
*/
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
public class Solution {
public static void main(String[] args) throws Exception {
int idNum = 0;
ArrayList<String> strings = null;
ArrayList<Integer> numbers = null;
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String file = reader.readLine();
reader.close();
System.out.println(args.length);
if (args.length > 3 && args[0].equals("-c")) {
ArrayList<String> list = new ArrayList<>();
for (int i = 1; i < args.length; i++) { //в лист ложим имя цену кол-во те что в аргументах
list.add(args[i]);
}
String price = list.get(list.size() - 2); //отделяем имя цену кол-во
String quantity = list.get(list.size() - 1);
String name = "";
for (int i = 0; i < list.size() - 2; i++) {
String aa = list.get(i);
name += aa;
name += " ";
}
try (BufferedReader read = new BufferedReader(new FileReader(file))) { //узнаем id последней записи в файле 8 - символов число
strings = new ArrayList<>();
numbers = new ArrayList<>();
String s = null;
while ((s = read.readLine()) != null) {
strings.add(s); //все строки в string
}
if (strings.size() > 0) { //если фаил не пустой тогда берем его в последней строке берем id
for (int i = 0; i < strings.size(); i++) {
String[] str = strings.get(i).split(" ");
String id = str[0]; //id(каждую строку) порезали до числа
numbers.add(Integer.parseInt(id)); //добавляем в лист все id сех листов
}
idNum = Collections.max(numbers); //находим большее id среди всех строк
}
}
try (FileOutputStream fos = new FileOutputStream(file, true)) { //записуем в фаил новую строку
String strId = String.valueOf(++idNum);
if (strings.size() > 0) { // если в файле нет строк тогда записуем с новой строки
fos.write("\r\n".getBytes());
}
//пишем в фаил product, Name, price, quantity и добиваем пробелами при необходимисти
if (strId.length() > 8) {
String strId1 = strId.substring(0, 8);
fos.write(strId1.getBytes());
} else {
fos.write(strId.getBytes());
for (int i = 0; i < 8 - strId.length(); i++) {
fos.write(" ".getBytes());
}
}
if (name.length() > 30) {
String name1 = name.substring(0, 30);
fos.write(name1.getBytes());
} else {
fos.write(name.getBytes());
for (int i = 0; i < 30 - name.length(); i++) {
fos.write(" ".getBytes());
}
}
if (price.length() > 8) {
String price1 = price.substring(0, 8);
fos.write(price1.getBytes());
} else {
fos.write(price.getBytes());
for (int i = 0; i < 8 - price.length(); i++) {
fos.write(" ".getBytes());
}
}
if (quantity.length() > 4) {
String quantity1 = quantity.substring(0, 4);
fos.write(quantity1.getBytes());
} else {
fos.write(quantity.getBytes());
for (int i = 0; i < 4 - quantity.length(); i++) {
fos.write(" ".getBytes());
}
}
}
}
}
}
// D:/1.txt
// 0 1 3 4
// [product, Name, price, quantity]
// 12 productNam1 2.6 5
// 13 productNam2 7.8 4
// 14 productNam3 7.4 3
// 12 productNam1 2.6 5
// D:\javaRush\JavaRushTasks\2.JavaCore\src\1.txt