Можете скопировать код , что бы убедиться что он рабочий .
package com.javarush.task.task18.task1827;
/*
Прайсы
*/
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
//C:\Users\Stas\Desktop\Lion.avi.part2.txt
//-c productName price quantity
//-c SarkNeiser 214.00 100
//C:\Users\Stas\Desktop\222.txt
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
ArrayList<String> gap = new ArrayList<>();
String filename = reader.readLine();
reader.close();
if (args.length > 0 && args[0].equals("-c")) {
int argsCount = args.length;
BufferedReader reader1 = new BufferedReader(new FileReader(filename));
String s;
while ((s = reader1.readLine()) != null) {
gap.add(s);
}
reader1.close();
Collections.sort(gap);
int lastId = Integer.parseInt(gap.get(gap.size() - 1).substring(0, 8).trim());
BufferedWriter writer = new BufferedWriter(new FileWriter(filename, true));
if (argsCount > 4) { // На тот случай , если productName будет таким : Шорты синие с блёстками в полосочку
int remaining = argsCount - 4;
StringBuilder sb = new StringBuilder();
for (int i = 1; i < remaining + 2; i++) {
sb.append(args[i] + " ");
}
if (sb.toString().length() >= 30) { // Если productName с многочислинными пробелами больше 30 , обрезаем.
String ss = String.format("%-8d%-30s%-8s%-4s", lastId + 1, sb.toString().substring(0, 30), args[argsCount - 2], args[argsCount - 1]);
writer.newLine();
writer.write(ss);
writer.close();
}else { // Если входит в рамки допустимой длинны , то просто записываем .
String ss = String.format("%-8d%-30s%-8s%-4s", lastId + 1, sb.toString(), args[argsCount - 2], args[argsCount - 1]);
writer.newLine();
writer.write(ss);
writer.close();
}
}else { // Если агументов обычное кол-во , то всё как обычно.
if (args[1].length() >= 30) { // Если кол-во символов productName больше 30 , обрезаем
String ss = String.format("%-8d%-30s%-8s%-4s", lastId + 1, args[1].substring(0,30), args[2], args[3]);
writer.newLine();
writer.write(ss);
writer.close();
}else { // Если меньше просто вписываем
String ss = String.format("%-8d%-30s%-8s%-4s", lastId + 1, args[1], args[2], args[3]);
writer.newLine();
writer.write(ss);
writer.close();
}
}
}
}
}