Все работает на практике, по факту валидатор не пропускает.
package com.javarush.task.task18.task1828;
import java.io.*;
import java.nio.Buffer;
import java.util.ArrayList;
import java.util.List;
/*
Прайсы 2
*/
public class Solution {
public static void main(String[] args) throws Exception {
// args = new String[]{"-u", "1", "жвачка", "17.05", "12225", "семь пятниц"}; // -u 1 жвачка 17.05 12225 семь пятниц
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String path = reader.readLine();
reader = new BufferedReader(new FileReader(path));
// ДЛЯ ОБНОВЛЕНИЯ ДАННЫХ
if (args[0] == "-u") {
ArrayList<String> listOfData = new ArrayList<>();
long targetId = Long.parseLong(args[1]);
String str = "";
while ((str = reader.readLine()) != null){
if (targetId != Long.parseLong(str.substring(0,8).trim())){
listOfData.add(str);
}
else {
//для id
String newId = args[1];
if (args[1].length() < 8) {
for (int i = args[1].length(); i < 8; i++) {
newId += " ";
}
}
// для product name
String productName = args[2];
if (args[2].length() < 30) {
for (int i = args[2].length(); i < 30; i++) {
productName += " ";
}
}
else if (args[2].length() > 30) {
productName = args[2].substring(0, 30);
}
// для price
String newPrice = args[3];
if (args[3].length() < 8) {
for (int i = args[3].length(); i < 8; i++) {
newPrice += " ";
}
}
else if (args[3].length() > 8) {
newPrice = args[2].substring(0, 8);
}
// для quantity
String newQuantity = args[4];
if (args[4].length() < 4) {
for (int i = args[4].length(); i < 5; i++) {
newQuantity += " ";
}
}
else if (args[4].length() > 4) {
newQuantity = args[4].substring(0, 4);
}
// занесение данных в массив
listOfData.add(newId + productName + newPrice + newQuantity);
}
}
reader.close();
FileWriter fileWriter = new FileWriter(path);
for (int i = 0; i < listOfData.size(); i++) {
fileWriter.write(listOfData.get(i) + "\n");
}
fileWriter.close();
}
// ДЛЯ УДАЛЕНИЯ ДАННЫХ
else if (args[0] == "-d") {
ArrayList<String> listOfData = new ArrayList<>();
long targetId = Long.parseLong(args[1]);
String str = "";
while ((str = reader.readLine()) != null){
if (targetId != Long.parseLong(str.substring(0,8).trim())){
listOfData.add(str);
}
}
reader.close();
FileWriter fileWriter = new FileWriter(path);
for (int i = 0; i < listOfData.size(); i++) {
fileWriter.write(listOfData.get(i) + "\n");
}
fileWriter.close();
}
reader.close();
}
}