Впечатление, что если бы ничего не делал - меньше бы ошибок было=)
package com.javarush.task.task18.task1827;
/*
Прайсы
*/
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
if ((args.length == 4) && (args[0].equals("-c"))) {
List<String> lines = new ArrayList<>();
Path path = Paths.get(fileName);
try (Stream<String> lineStream = Files.newBufferedReader(path).lines()) {
lines = lineStream.collect(Collectors.toList());
} catch (IOException ignored) {
}
int maxID = 0;
for (int i = 0; i < lines.size(); i++) {
// System.out.println(lines.get(i));
String id = lines.get(i).substring(0, lines.get(i).indexOf(' '));
if (maxID <= Integer.parseInt(id)) maxID = Integer.parseInt(id);
}
maxID++;
// System.out.println("maxID = " + maxID);
String productName = args[1];
float price = Float.parseFloat(args[2]);
int quantily = Integer.parseInt(args[3]);
String toFile = String.format(Locale.ROOT, "%-8d%-30s%-8.2f%-4d", maxID, productName, price, quantily);
// System.out.println(toFile);
lines.add(toFile);
try (BufferedWriter buf = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName)))) {
for (String s : lines)
buf.write(s + "\r\n");
}
}
}
}