Ругается на поток для Записи.
По существу - где открыл поток, там и закрыл. Если вынесу за функцию if, то поток будет неинициализирован и полезут ошибки.
package com.javarush.task.task18.task1828;
/*
Прайсы 2
*/
import java.io.*;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
reader.close();
// String fileName = "C:\\Users\\Gagarin\\Desktop\\javaRush\\JRTest1.txt";
// String[] argsBuf = {"-u","198479", "Lичь пернатая", "300.00", "156"};
// args = argsBuf;
//Создаём лист из файла
BufferedReader bufferedReader = new BufferedReader(new FileReader(fileName));
ArrayList<String> list = new ArrayList<>();
while (bufferedReader.ready()) {
String s = bufferedReader.readLine();
if (!s.equals(""))
list.add(s);
}
bufferedReader.close();
//проверка на аргумент
if (args.length != 0) {
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(fileName));
switch (args[0]) {
case ("-u"): {
int id = Integer.parseInt(args[1]);
for (int j = 0; j < list.size(); j++) {
String str = list.get(j);
if (str.length() > 0) {
int strId = Character.isDigit(str.charAt(0)) ? Integer.parseInt(str.substring(0, 8).replaceAll("\\s", "")) : Integer.parseInt(str.substring(1, 9).replaceAll("\\s", ""));
if (id == strId) {
for (int i = args[2].length(); i < 30; i++) {
args[2] = args[2] + " ";
}
for (int i = args[3].length(); i < 8; i++) {
args[3] = args[3] + " ";
}
for (int i = args[4].length(); i < 4; i++) {
args[4] = args[4] + " ";
}
for (int i = args[1].length(); i < 8; i++) {
args[1] = args[1] + " ";
}
str = args[1] + args[2] + args[3] + args[4];
list.set(j, str);
break;
}
}
}
String[] fileStr = new String[list.size()];
fileStr = list.toArray(fileStr);
for (int i = 0; i < fileStr.length; i++) {
bufferedWriter.write(fileStr[i]);
bufferedWriter.newLine();
}
}
break;
case ("-d"): {
int id = Integer.parseInt(args[1]);
for (int j = 0; j < list.size(); j++) {
String str = list.get(j);
if (str.length() > 0) {
int strId = Character.isDigit(str.charAt(0)) ? Integer.parseInt(str.substring(0, 8).replaceAll("\\s", "")) : Integer.parseInt(str.substring(1, 9).replaceAll("\\s", ""));
if (id == strId) {
list.remove(j);
}
}
}
String[] fileStr = new String[list.size()];
fileStr = list.toArray(fileStr);
for (int i = 0; i < fileStr.length; i++) {
bufferedWriter.write(fileStr[i]);
bufferedWriter.newLine();
}
}
break;
default:
break;
}
//bufferedReader.close();
bufferedWriter.close();
}
// ArrayList<String> list = new ArrayList<>();
// BufferedReader reader = new BufferedReader(new FileReader(fileName));
// while (reader.ready()) {
// String s = reader.readLine();
// list.add(s);
// }
// reader.close();
// for(String x : list)
// System.out.println(x);
// ArrayList<String> list = new ArrayList<>();
// list.add("blabla");
// list.add("bla2basdfwq");
// String[] buf = new String[list.size()];
// buf = list.toArray(buf);
// BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(fileName));
// for (int i = 0; i < buf.length; i++) {
// bufferedWriter.write(buf[i]);
// bufferedWriter.newLine();
// }
// bufferedWriter.close();
}
}