Привет, Я уже наверное всех задолбал вопросами по этой задаче, но очень хочу наконец то ее одолеть. Уже все работает как надо, записи обновляются, удаляются и вроде бы всюду позакрывал все потоки(несмотря на то что большинство из них лежат в трай кэтч блоках), но валидатор упорно не принимает решения...
package com.javarush.task.task18.task1828;

import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

/*
Прайсы 2
*/

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader consoleReader = new BufferedReader(new InputStreamReader(System.in));
        try {
            String file = consoleReader.readLine();
            if (!(args.length == 0)) {
                if (args[0].equals("-u")) {
                    updateList(args, file);
                }
                if (args[0].equals("-d")) {
                    deleteRecord(args, file);
                }
            }
        } catch (Exception e) {
        }
        consoleReader.close();
    }

    //C:\Users\vla9d\Desktop\Test\t1.txt
    public static void updateList(String[] args, String file) {
        ArrayList<String> tempbuffer = new ArrayList<>();
        String updatedRecord = updateLine(args);
        try {
            BufferedReader br = new BufferedReader(new FileReader(file));
            while (br.ready()) {
                tempbuffer.add(br.readLine());
            }
            br.close();
        } catch (Exception e) {
        }
        for (String s : tempbuffer) {
            Integer oldIndex = Integer.parseInt(s.substring(0, 8).trim());
            Integer newIndex = Integer.parseInt(args[1].trim());
            if (oldIndex.equals(newIndex)) {
                tempbuffer.set(tempbuffer.indexOf(s), updatedRecord);
            }
        }
        try {
            BufferedWriter bw = new BufferedWriter(new FileWriter(file));
            PrintWriter pw = new PrintWriter(bw);
            int counter = 0;
            for (String s : tempbuffer) {
                pw.print(s);
                counter++;
                if(counter<tempbuffer.size()){
                    pw.print("\n");
                }
            }
            bw.close();
            pw.close();
        } catch (Exception e) {
        }
    }

    public static void deleteRecord(String[] args, String file) {
        ArrayList<String> tempbuffer = new ArrayList<>();
        try {
            BufferedReader br = new BufferedReader(new FileReader(file));
            while (br.ready()) {
                tempbuffer.add(br.readLine());
            }
            br.close();
        } catch (Exception e) {
        }
        int lineToDelete = -1;
        for (String s : tempbuffer) {
            Integer oldIndex = Integer.parseInt(s.substring(0, 8).trim());
            Integer newIndex = Integer.parseInt(args[1].trim());
            if (oldIndex.equals(newIndex)) {
                lineToDelete = tempbuffer.indexOf(s);
            }
        }
        tempbuffer.remove(lineToDelete);
        try {
            BufferedWriter bw = new BufferedWriter(new FileWriter(file));
            PrintWriter pw = new PrintWriter(bw);
            int counter = 0;
            for (String ss : tempbuffer) {
                pw.print(ss);
                counter++;
                if(counter<tempbuffer.size()){
                    pw.print("\n");
                }
            }
            bw.close();
            pw.close();
        } catch (Exception e) {
        }
    }

    public static String updateLine(String[] args) {
        StringBuilder sb = new StringBuilder();
        String id = updateRecord(args[1], 8);
        String productName = updateRecord(args[2], 30);
//changes to price formating
        Float rawPrice = Float.parseFloat(updateRecord(args[3], 8));
        String stPrice = String.format(Locale.US, "%.2f", rawPrice);
        String price = updateRecord(stPrice, 8);

        String quantity = updateRecord(args[4], 4);
        sb.append(id);
        sb.append(productName);
        sb.append(price);
        sb.append(quantity);
        return sb.toString();
    }

    public static String updateRecord(String line, int length) {
        StringBuilder sb = new StringBuilder();
        String result;
        if (line.length() > length) {
            result = line.substring(0, length);
        } else {
            sb.append(line);
            while (sb.length() < length) {
                sb.append(" ");
            }
            result = sb.toString();
        }
        return result;
    }
}