Как правильно закрыть потоки input и output? Пробовал выносить их перед блоком try и закрывать в finally, но компилятор пишет ошибку и просит опять обработать их с try catch. Я уже из-за этого немного запутался. Валидатор JavaRush такое решение принял, но я понимаю, что закрывать потоки в блоке try неправильно, ведь если ошибка возникнет строчками выше, то они так и не закроются
public class Solution {
public static void main(String[] args) {
System.out.println("Введите путь к файлу 1: ");
try (Scanner scanner = new Scanner(System.in)) {
InputStream input = Files.newInputStream(Path.of(scanner.nextLine()));
OutputStream output = Files.newOutputStream(Path.of(scanner.nextLine()));
while (input.available() > 0) {
if (input.available() == 1) {
output.write(input.read());
break;
}
int first = input.read();
int second = input.read();
output.write(second);
output.write(first);
}
input.close();
output.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}