Реализовал по следующей логике (которая по моему мнению сходится с начальным заданием): 1) Отловил исключение при вводе не правильного имени файла 2) В блоке catch вывел нужное сообщение, считал с консоли еще раз имя и в этом же блоке сделал попытку еще раз считать файл. При валидации вываливается рекомендация: "Проверь, что программа успешно копирует содержимое, если первый раз было введено имя несуществующего файла." Если я и второй раз ввожу не правильное имя, программа завершается, не может быть успешного копирования. О какой проверке успешности идет речь, если в условии об этом ни слова?
package com.javarush.task.task09.task0929;

import java.io.*;

/*
Обогатим код функциональностью!
*/

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        String sourceFileName = reader.readLine();
        String destinationFileName = reader.readLine();
        InputStream fileInputStream=null;

            try {
                fileInputStream = getInputStream(sourceFileName);
            } catch (IOException e) {
                System.out.println("Файл не существует.");
                sourceFileName = reader.readLine();
                fileInputStream = getInputStream(sourceFileName);
            }


        OutputStream fileOutputStream = getOutputStream(destinationFileName);

        while (fileInputStream.available() > 0) {
            int data = fileInputStream.read();
            fileOutputStream.write(data);
        }

        fileInputStream.close();
        fileOutputStream.close();
    }

    public static InputStream getInputStream(String fileName) throws IOException {
        return new FileInputStream(fileName);
    }

    public static OutputStream getOutputStream(String fileName) throws IOException {
        return new FileOutputStream(fileName);
    }
}