У себя локально прогнал во всех мыслимых и немыслимых режимах, все всегда работает. Да и нечему тут не работать, программа простая, как угол дома.
Насчет «Поток чтения из файла не был закрыт» вообще не понял, как try-with-resources может что-то не закрыть?
package com.javarush.task.task18.task1828;
import java.io.*;
import java.util.Scanner;
/*
Прайсы 2
*/
public class Solution {
public static void main(String[] args) throws IOException {
String fName;
try (Scanner scanner = new Scanner(System.in)) {
fName = scanner.nextLine();
}
if (args.length == 0) {
return;
}
File fl = new File(fName);
File tempFile = File.createTempFile("tempFile", ".tmp", fl.getParentFile());
String code = args[1].trim();
try (FileReader reader = new FileReader(fName);
Scanner scanner = new Scanner(reader);
FileWriter writer = new FileWriter(tempFile)) {
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String currentCode = line.substring(0, 8).trim();
if (code.equals(currentCode)) {
switch (args[0]) {
case "-d":
line = "";
break;
case "-u":
line = String.format("%-8.8s%-30.30s%-8.8s%-4.4s",
code, args[2], args[3], args[4]);
break;
}
}
if (!line.equals("") && scanner.hasNextLine()) {
line += "\n";
}
writer.write(line);
}
writer.flush();
} catch (IOException e) {
e.printStackTrace();
}
tempFile.renameTo(fl);
}
}