Написал вот такое решение, но не проходит по 3 пункту.
Если не проходит через System.exit() , то нужно полностью весь код брать в if скобки? (Смотреть 18 - 20 строка)
Может есть способ сделать всё красивее, подскажите)
package com.javarush.task.task18.task1827;
import java.util.*;
import java.io.*;
public class Solution {
public static void main(String[] args) throws IOException {
String id;
String name;
String price;
String quantity;
String finalStr = "";
boolean isNew = false;
BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
String fileName = r.readLine();
if(args[0] == null || !"-c".equals(args[0])) {
System.exit(0);
}
//FileInputStream fis = new FileInputStream(fileName);
BufferedReader fileR = new BufferedReader(new FileReader(fileName));
ArrayList <String> fileDataArr = new ArrayList<String>();
String fileData;
while((fileData = fileR.readLine()) != null) {
fileDataArr.add(fileData);
}
if(fileDataArr.size() == 0) {
id = "1 ";
isNew = true;
}
else {
//int intId = Integer.parseInt(fileDataArr.get(fileDataArr.size() - 1).substring(0,8).trim()) + 1;
//id = addSpaces(String.valueOf(intId), 8);
int intId = 0;
for(String s: fileDataArr) {
int thisId = Integer.parseInt(s.substring(0,8).trim());
if(thisId >= intId) {
intId = thisId;
}
}
id = addSpaces(String.valueOf(intId + 1), 8);
}
name = addSpaces(args[1], 30);
price = addSpaces(args[2], 8);
quantity = addSpaces(args[3], 4);
finalStr = id + name + price + quantity;
BufferedWriter bw = new BufferedWriter(new FileWriter(fileName, true));
if(isNew) {
bw.write(finalStr);
}
else {
bw.write("\n" + finalStr);
}
bw.close();
fileR.close();
}
public static String addSpaces(String str, int expectedCharacters) {
if(str.length() >= expectedCharacters) {
return str;
}
int strStartedLength = str.length();
for(int i = 0; i < expectedCharacters - strStartedLength; i++) {
str += " ";
}
return str;
}
}