Почитал другие вопросы по этой задаче, понял что у меня говнокод, но решения проблемы не нашел.
Пробовал тестировать, создал файл, копировал туда строки как в примере в задании. Вроде все работает.
Валидатор не принимает по последним 4 пунктам.
package com.javarush.task.task18.task1827;
/*
Прайсы
*/
import java.io.*;
import java.util.ArrayList;
import java.util.stream.Stream;
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String file = reader.readLine();
BufferedReader fileReader = new BufferedReader(new FileReader(file));
BufferedWriter fileWriter = new BufferedWriter(new FileWriter(file, true));
reader.close();
if(args.length!=0) {
//Object[] list = fileReader.lines().toArray();
String y;
ArrayList<String> list = new ArrayList<>();
while ((y = fileReader.readLine())!=null){
list.add(y);
}
fileReader.close();
int id=0;
for(String o : list){
String s = o.substring(0,8).replaceAll("[\\s]", "");
int x = Integer.parseInt(s);
if (x>id) id = x;
}
id++;
fileWriter.write("\r\n");
//Запись id
fileWriter.write(String.valueOf(id));
int len = 8 - (Integer.toString(id).length());
for (int i = 0; i < len; i++) {
fileWriter.write(" ");
}
//Запись productName
StringBuffer words = new StringBuffer();
for(int j=1; j<args.length-2; j++){
words.append(args[j]);
words.append(" ");
}
fileWriter.write(words.toString(), 0, 30);
//Запись price
char[] pr = args[args.length-2].toCharArray();
for (int i = 0; i < 8; i++) {
if (pr.length > i) fileWriter.write(pr[i]);
else fileWriter.write(" ");
}
//Запись quantity
char[] qu = args[args.length-1].toCharArray();
for (int i = 0; i < 4; i++) {
if (qu.length > i) fileWriter.write(qu[i]);
else fileWriter.write(" ");
}
fileWriter.close();
}
}
}