Последний рубеж и не понятно чего ему еще нужно закрыть?
package com.javarush.task.task18.task1827;
import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.io.RandomAccessFile;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/*
Прайсы
*/
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];
//вычитываем имя файла из консоли
String fileName;
try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
fileName = reader.readLine();
}
//пробегаем по всем строкам в файле (с конца) и собираем ID из каждой строки
List<Integer> ids = new ArrayList<>();
try (RandomAccessFile randomAccessFile = new RandomAccessFile(fileName, "r")) {
StringBuilder builder = new StringBuilder();
long fileLength = randomAccessFile.length() - 1;
String line = "0";
for (long pointer = fileLength; pointer != -1; pointer--) {
randomAccessFile.seek(pointer);
int read = randomAccessFile.read();
char c = (char) read;
if (c == '\n' || pointer == 0) {
if (pointer == 0) {
builder.append(c);
}
builder.reverse();
line = builder.toString();
ids.add(getId(line));
builder = new StringBuilder();
continue;
}
builder.append(c);
}
}
//сортируем, делаем реверс коллекции, забираем максимальный ID
Collections.sort(ids);
Collections.reverse(ids);
int id = ids.get(0) + 1;
String resultLine = String.format("%n%-8d%-30.30s%-8.8s%-4.4s", id, productName, price, quantity);
try (FileWriter writer = new FileWriter(fileName, true)) {
writer.write(resultLine);
}
}
}
private static int getId(String line) {
String sId = line.substring(0, 8);
return Integer.parseInt(sId.trim());
}
}