Протестировал в отдельном файле - все работает нормально, не могу понять что не так.
Данные в командной строке: -c "Шорты пляжные черные с рисунком" 10173.99 125
в файле специально добавлены разные индексы, в итоге получается следующее:
51 Шорты пляжные черные с рисунко10173.99125
8 Шорты пляжные черные с рисунко10173.99125
9 Шорты пляжные черные с рисунко10173.99125
10 Шорты пляжные черные с рисунко10173.99125
11 Шорты пляжные черные с рисунко10173.99125
52 Шорты пляжные черные с рисунко10173.99125
после выполнения команды добавляется запись с индексом 52
Ключ "-c" на английскомpackage com.javarush.task.task18.task1827;
import java.io.*;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
/*
Прайсы
*/
public class Solution {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
sc.close();
if (args.length > 0) {
String command = args[0];
if (command.equals("-c") && args[1] != null && args[2] != null && args[3] != null) {
String productName = args[1];
String price = args[2];
String quantity = args[3];
File f = new File(str);
int ind = 0;
if (f.exists()) {
try (BufferedReader buf = new BufferedReader(new InputStreamReader(new FileInputStream(f)))) {
while (buf.ready()) {
String current = buf.readLine();
if (current != null && !current.isEmpty()) {
ind = Math.max(Integer.parseInt(current.substring(0, 8).trim()), ind);
}
}
}
}
try (FileOutputStream fos = new FileOutputStream(str, true)) {
String row = String.format("\n%-8d%-30.30s%-8.8s%-4.4s", ++ind, productName, price, quantity);
fos.write(row.getBytes());
}
}
}
}
}