Вроде и обсуждалось не раз, а всё же... Вот моё решение этой задачи:
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();

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

        InputStream 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);
    }
}
Отправляю на валидацию. Не проходит, т.к. п.3 "Программа должна копировать содержимое первого файла" не выполняется. Ментор говорит: "Проверь, что программа успешно копирует содержимое, если первый раз было введено имя несуществующего файла.". Проверил. Копирует в обоих случаях. С валидатором не согласен. Куда писать? Памагитя :)