Всем привет!
Валидатор не пропускает вариант решения, хотя на мой взгляд всё работает. Так же валидатор пишет рекомендацию от ментора: "Исключение системы безопасности JavaRush. Вы выполняете потенциально опасную или запрещенную операцию."
Есть у кого предположения, в чём может быть дело?
package com.javarush.task.task18.task1827;
/*
Прайсы
CrUD для таблицы внутри файла.
Считать с консоли имя файла для операций CrUD.
Программа запускается со следующим набором параметров:
-c productName price quantity
Значения параметров:
где id - 8 символов.
productName - название товара, 30 символов.
price - цена, 8 символов.
quantity - количество, 4 символа.
-c - добавляет товар с заданными параметрами в конец файла, генерирует id самостоятельно, инкрементируя максимальный id, найденный в файле.
В файле данные хранятся в следующей последовательности (без разделяющих пробелов):
id productName price quantity
Данные дополнены пробелами до их длины.
Пример:
19846 Шорты пляжные синие 159.00 12
198478 Шорты пляжные черные с рисунко173.00 17
19847983Куртка для сноубордистов, разм10173.991234
Требования:
1. Программа должна считать имя файла для операций CrUD с консоли.
2. В классе Solution не должны быть использованы статические переменные.
3. При запуске программы без параметров список товаров должен остаться неизменным.
4. При запуске программы с параметрами "-c productName price quantity" в конец файла должна добавится новая строка с товаром.
5. Товар должен иметь следующий id, после максимального, найденного в файле.
6. Форматирование новой строки товара должно четко совпадать с указанным в задании.
7. Созданные для файлов потоки должны быть закрыты.
/home/kirdeb/a
-c aaa 33.77 4
*/
import java.io.*;
import java.util.Scanner;
public class Solution {
public static void main(String[] args) throws Exception {
try(BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
PrintWriter printWriter = new PrintWriter(new FileOutputStream(reader.readLine(), true));
BufferedReader fileReader = new BufferedReader(new FileReader("/home/kirdeb/a"));
Scanner scanner = new Scanner(fileReader)){
String s;
int max=0;
if ((args.length != 0) && args[0].equals("-c")){
while (scanner.hasNextLine()) {
s = scanner.nextLine().substring(0, 8).trim();
if (Integer.parseInt(s) > max) max = Integer.parseInt(s);
}
printWriter.printf("%8d%30s%8.2f%4d\n", ++max, args[1], Float.parseFloat(args[2]), Integer.parseInt(args[3]));
}
} catch(IOException e){
e.printStackTrace();
}
}
}