Бился, бился и в итоге честно скопировал решение отсюда https://javarush.com/help/56166#discussion С учетом подсказок знатоков.
В решении разобрался, как мне казалось, и вроде б сделал все по феншую. Но что-то все-таки упустил. Ткните носом, пожалуйста.
package com.javarush.task.task18.task1827;
/*
Прайсы
*/
import java.io.*;
public class Solution {
public static void main(String[] args) throws Exception {
if (args.length == 0)
return;
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
reader.close();
BufferedReader reader2 = new BufferedReader(new FileReader(fileName));
FileWriter writer = new FileWriter(fileName, true);
int maxID = getMaxID(reader2);
switch (args[0]) {
case "-c":
add(args, maxID, writer);
break;
case "-r":
break;
case "-u":
break;
case "-d":
break;
}
reader2.close();
writer.close();
}
public static void add (String[] args, int id, FileWriter writer ) {
try {
writer.write(String.format("\n%-8.8%s-30.30%s-8.8%s-4.4%s", ++id, args[1], args[2], args[3]));
writer.flush();
} catch (IOException e) {
}
}
public static int getMaxID(BufferedReader reader){
int maxID = 0;
int iD = 0;
String parseString;
try{
while (reader.ready()){
parseString = reader.readLine();
if (parseString == null) return maxID;
iD = Integer.parseInt(parseString.substring(0,8).trim());
if (iD > maxID) maxID = iD;
}
}catch (IOException e){}
return maxID;
}
}