что-то не нахожу ошибки, по форматированию строки всё вроде Ок.
package com.javarush.task.task18.task1827;
/*
Прайсы
CrUD для таблицы внутри файла.
Считать с консоли имя файла для операций CrUD.
Программа запускается со следующим набором параметров:
-c productName price quantity
Значения параметров:
где id - 8 символов.
productName - название товара, 30 символов.
price - цена, 8 символов.
quantity - количество, 4 символа.
-c - добавляет товар с заданными параметрами в конец файла,
генерирует id самостоятельно, инкрементируя максимальный id, найденный в файле.
В файле данные хранятся в следующей последовательности (без разделяющих пробелов):
id productName price quantity
Данные дополнены пробелами до их длины.
Пример:
19846 Шорты пляжные синие 159.00 12
198478 Шорты пляжные черные с рисунко173.00 17
19847983Куртка для сноубордистов, разм10173.991234
*/
import java.io.*;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) throws Exception {
ArrayList<String> prices = new ArrayList<>();
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
//String fileName = "d:/3.txt";
reader.close();
if(args.length != 0) {
readFile(fileName, prices);
writeFile(args, findMaxIndexandIncr(prices), fileName);
}
}
public static void readFile(String fileName, ArrayList<String> prices) throws IOException {
FileInputStream fis = new FileInputStream(fileName);
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
String strLine;
while ((strLine = br.readLine()) != null){
prices.add(strLine);
}
fis.close();
br.close();
}
public static int findMaxIndexandIncr(ArrayList<String> prices){
int max = -1;
for(String str : prices){
int ind = Integer.parseInt(str.substring(0,8).trim());
if(ind > max)max = ind;
}
return ++max;
}
public static void writeFile(String[] args, int ind, String fileName) throws IOException {
FileOutputStream fos = new FileOutputStream(fileName,true);
String productName = args[1];
String price = args[2];
String quantity = args[3];
String str_ind="" +ind;
while (str_ind.length() < 8){
str_ind+= " ";
}
while (productName.length() < 30){
productName+= " ";
}
while (price.length() < 8){
price = " " + price;
}
while (quantity.length() < 4){
quantity = " " + quantity;
}
String res = str_ind + productName + price + quantity;
/*System.out.println(str_ind.length());
System.out.println(productName.length());
System.out.println(price.length());
System.out.println(quantity.length());
System.out.println(res.length());
*/
fos.write(10);
fos.write(res.getBytes());
fos.close();
}
}