Помогите, пожалуйста.
Претензия валидатора: "При запуске программы с параметрами "-c productName price quantity" в конец файла должна добавится новая строка с товаром."
Очень странно, т.к. тестировала, несколько раз запускала, работает, строка четко дописывается в конец имеющегося файла. Форматирование строки соблюдается, данные всегда вносятся в конец имеющегося. Пример работы:
текст в файле до работы:
19846 Шорты пляжные синие 159.00 12
198478 Шорты пляжные черные с рисунко173.00 17
19847983Куртка для сноубордистов, разм10173.991234
после прогона программы несколько раз:
19846 Шорты пляжные синие 159.00 12
198478 Шорты пляжные черные с рисунко173.00 17
19847983Куртка для сноубордистов, разм10173.991234
19847984платье зеленое длинное 345.00 67
19847985платье зеленое длинное 345.00 67
19847986платье зеленое длинное 345.00 67
19847987сарафан в цветочек розовый 1234.89 56
Возможно, это вопрос уже к тем, кто составляет условия и поддерживает программу валидатора.
BufferedReader rFileName = new BufferedReader(new InputStreamReader(System.in));
String fileName = rFileName.readLine();
rFileName.close();
if(args.length != 0){
String key = args[0];
String quantity = args[args.length-1];
String price = args[args.length -2];
String productName = args[1];
if(args.length>4){
for (int i =2; i < args.length-2 ; i++) {
productName = productName.concat(" "+ args[i]);
}
}
if(key.equals("-c")){
Scanner readFile = new Scanner(new FileReader(fileName));
BufferedWriter writeFile = new BufferedWriter(new FileWriter(fileName,true));
String finish;
//1. вычисляем id = максимальный id в файле +1:
int id;
ArrayList<Integer> contentFile = new ArrayList<>();
ArrayList<String> cont = new ArrayList<>();
while (readFile.hasNextLine()){
//t = t.substring(0,8).replaceAll(" ","");
cont.add(readFile.nextLine());
}
for (String t: cont
) {
String s = t.substring(0,8).trim().replaceAll(" ","");
contentFile.add(Integer.parseInt(s));
}
id = Collections.max(contentFile)+1;
// Собираем строку для записи:
//часть1: форматируем id до 8 символов:
finish = formatSt(Integer.toString(id),8);
//часть 2: форматируем productName и добавляем к finish
String temp = formatSt(productName,30);
finish = finish.concat(temp);
//часть3: форматируем price и добавляем к finish
temp = formatSt(price, 8);
finish = finish.concat(temp);
// часть4: форматируем quantity и добавляем к finish
temp = formatSt(quantity,4);
finish = finish.concat(temp);
// Finish!!!
writeFile.write(finish);
writeFile.newLine();
readFile.close();
writeFile.close();
}}
}
public static String formatSt (String inString, int lengthString){
char[] p = new char[lengthString];
for (int i = 0; i < p.length; i++) {
p[i] = ' ';
}
int n = lengthString - inString.length();
if (n>0){
return inString.concat(String.copyValueOf(p,0,n));
}
if(n<0){
return inString.substring(0,lengthString-1);
}
return inString;
}