Всю голову сломала, почему не принимает валидатор? На тесте вроде все нормально добавляет в файл. Коллеги, помогите разобраться, второй день сижу) п.с. там в комментах опечатка к методу формат, не не больше 30 символов, а сколько нужно, столько и обрезает
package com.javarush.task.task18.task1827;
/*
Прайсы
C:\practice\1.txt
*/
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Scanner;
public class Solution {
public static void main(String[] args) throws Exception {
if (args.length == 4 && args[0].equals("-c")) {
String productName = args[1];
String price = args[2];
String quantity = args[3];
productName = Solution.format(productName, 30); //форматируем параметры
price = Solution.format(price, 8);
quantity = Solution.format(quantity, 4);
String ppq = productName + price + quantity; //форматированные параметры
Scanner scanner = new Scanner(System.in);//считываем название файла
String fileName = scanner.nextLine();
scanner.close();
FileInputStream fileInputStream = new FileInputStream(fileName);
String base = ""; //записываем содержимое файла в base
int counter = 0;
while (fileInputStream.available() > 0) {
char c = (char) fileInputStream.read();
base = base + c;
counter++;
}
fileInputStream.close();
base = base.replaceAll("\r\n", ""); //удаляем всякие лишние символы типа заголовка и начала строки
base = base.replaceAll("", "");
int maxId = 0;
int count = 0;
for (int i = 0; i < base.length() / 50; i++) {
String nomber = base.substring(count, count + 8); // ищем первые 8 символов (айди) из каждых 50
nomber = nomber.replaceAll(" ", "");
int id = Integer.parseInt(nomber);
if (maxId < id) maxId = id; //сравниваем с текущим максимальным id
count = count + 50;
}
maxId = maxId + 1; //узнаем следующий после максимального id
String id = String.valueOf(maxId);
id = Solution.format(id, 8); //форматируем id
String newProduct = "\r\n" + id + ppq; //итоговая строчка, которую надо добавить в файл: новая строка + id + форматированные параметры
FileOutputStream fileOutputStream = new FileOutputStream(fileName, true);
fileOutputStream.write(newProduct.getBytes());
fileOutputStream.close();
}
}
private static String format(String param, int length) { //метод форматирует параметр - не больше 30 символов, если меньше то дополняет пробелами
int spases = length - param.length();
if (spases > 0) {
for (int i = 0; i < spases; i++) {
param = param + " ";
}
}
if (spases < 0) param = param.substring(0, length);
return param;
}
}