Why point 3 is bad?
package pl.codegym.task.task18.task1827;
/*
Ceny
*/
import java.io.*;
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
reader.close();
String c = args[0]; // 8 znaków
String productName = args[1]; // 30 znaków
String price = args[2]; // 8 znaków
String quantity = args[3]; // 4 znaki
String stringToWrite = "";
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(fileName, true));
reader = new BufferedReader(new FileReader(fileName));
String line = "";
String data = "";
if (!args.equals(null)) {
if (args[0].equals("-c") && args.length == 4) {
while ((line = reader.readLine()) != null) {
data = line;
}
int newID = Integer.parseInt(data.substring(0, 8)) + 1;
String ID = Integer.toString(newID);
stringToWrite += newID;
for (int i = 0; i < 8 - ID.length(); i++) {
stringToWrite += " ";
}
stringToWrite += args[1];
for (int i = 0; i < 30 - args[1].length(); i++) {
stringToWrite += " ";
}
stringToWrite += args[2];
for (int i = 0; i < 8 - args[2].length(); i++) {
stringToWrite += " ";
}
stringToWrite += args[3];
for (int i = 0; i < 4 - args[3].length(); i++) {
stringToWrite += " ";
}
bufferedWriter.write("\n" + stringToWrite);
reader.close();
bufferedWriter.close();
}
}
}
}
//public class Solution {
// public static void main(String[] args) throws Exception {
//
// BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
// String fileName = reader.readLine();
// reader.close();
//
// reader = new BufferedReader(new FileReader(fileName));
//
// if (args[0].equals("-c") && args.length == 4) {
//
// String line;
// String data = "";
//
// while ((line = reader.readLine()) != null) {
// data = line;
// }
// reader.close();
//
// int newId = Integer.parseInt(data.substring(0, 8))+1;
//
// BufferedWriter writer = new BufferedWriter(new FileWriter(fileName, true));
//
// String newLine = "";
//
// newLine += newId;
// newLine += addSpaces(8-Integer.toString(newId).length());
//
// newLine += args[1];
// newLine += addSpaces(30-args[1].length());
//
// newLine += args[2];
// newLine += addSpaces(8-args[2].length());
//
// newLine += args[3];
// newLine += addSpaces(4-args[3].length());
//
// writer.write("\n"+newLine);
//
// writer.close();
// } else { reader.close(); }
//
// }
//
// public static String addSpaces(int n) {
// String spaces = "";
// for (int i = 0; i < n; i++)
// spaces += " ";
//
// return spaces;
// }
//}
/*
Ceny
CrUD dla tabeli w pliku.
Odczytaj z konsoli nazwę pliku dla operacji CrUD.
Program jest uruchamiany z następującymi argumentami:
-c productName price quantity
Wartości argumentów:
gdzie id to 8 znaków.
productName to 30 znaków.
price to 8 znaków.
quantity to 4 znaki.
-c dodaje produkt o określonych parametrach na końcu pliku i generuje id poprzez zwiększenie maksymalnej wartości id odnalezionej w pliku.
Dane w pliku są przechowywane w następującej kolejności (bez spacji):
id productName price quantity
Każde pole danych jest uzupełniane spacjami na całej długości.
Przed dodaniem nowej linii, ponownie zapisz całą jej zawartość do pliku.
Przykład:
19847 Swim trunks, blue 159.00 12
198479 Swim trunks, black with printe173.00 17
19847983Snowboard jacket with reflecti10173.991234
Requirements:
1. Program powinien odczytywać z konsoli nazwę pliku dla operacji CrUD.
2. Klasa Solution nie powinna używać zmiennych statycznych.
3. W przypadku uruchamiania programu bez argumentów, lista produktów musi pozostać niezmieniona.
4. W przypadku uruchamiania programu z argumentami "-c productName price quantity", na końcu pliku należy dodać nową linię z odpowiednim produktem.
5. Produkt musi mieć kolejny numer id następujący po maksymalnej wartości id odnalezionej w pliku.
6. Format linii nowego produktu musi dokładnie odpowiadać formatowi określonemu w zadaniu.
7. Strumienie pliku muszą zostać zamknięte.
*/