Or am I missing something? Seems to work in tests, but I could be missing something
package com.codegym.task.task18.task1827;
/*
Prices
*/
import java.io.*;
import java.util.ArrayList;
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();
if ("-c".equals(args[0])) {
addProduct(fileName, args[1], args[2], args[3]);
}
}
public static void addProduct(String file, String productName, String price, String quantity) throws IOException {
ArrayList<String> list = new ArrayList<>();
StringBuilder proName = new StringBuilder(productName);
StringBuilder pri = new StringBuilder(price);
StringBuilder quan = new StringBuilder(quantity);
while (proName.length() < 30) {
proName.append(" ");
if (proName.length() == 30){
list.add(proName.toString());
}
}
while (pri.length() < 8) {
pri.append(" ");
if (pri.length() == 8){
list.add(pri.toString());
}
}
while (quan.length() < 4) {
quan.append(" ");
if (quan.length() == 4){
list.add(quan.toString());
}
}
ArrayList<String> prevList = new ArrayList<>();
try (BufferedReader fileReader = new BufferedReader(new FileReader(file))) {
while (fileReader.ready()) {
String data = fileReader.readLine();
prevList.add(data);
}
}
try (BufferedWriter writer = new BufferedWriter(new FileWriter(file))){
for (String y : prevList) {
writer.write(y);
writer.write(System.lineSeparator());
}
String maxId = prevList.get(prevList.size() - 1).substring(0, 8).trim();
int iden = Integer.parseInt(maxId);
iden++;
StringBuilder id = new StringBuilder(String.valueOf(iden));
while (id.length() < 8) {
id.append(" ");
}
list.add(0, id.toString());
for (String x : list) {
writer.write(x);
}
}
prevList.clear();
}
}
//-c "SwimTrunks, blue" 159.00 12